Spark读写不同格式数据
Spark读写不同个数数据
SPark读取数据
读取文本文件格式
val inputTextFile = sc.textFile(path)
可以通过/*.txt读取多个文件。
读取JSON文件格式
和文本文件读取函数一样
val inputJsonFIle = sc.textFIle("path/a.json")
读取CSV、TSV格式数据
采用flatMap()和split()函数来分割。
flatMap(_.split(","))
flatMap(_.split("\t"))
读取SequenceFile格式数据
val inputSequenceFile = sc.sequenceFile[String, String](path)
读取Object格式数据
val inputObjectFile = sc.objectFile[Person](path)
读取HDFS数据,调用Hadoop API
val inputHadoopFile = sc.newAPIHadoopFile[LongWritable, Text, TextInputFormat](path, classOf[TextInputFormat], classOf[LongWritable], classOf[Text])
读取MySQL数据库数据
val inputMysql = new JdbcRDD(sc,
() => {
Class.forName("com.mysql.jdbc.Driver")
DriverManager.getConnection("jdbc:mysql://bigdata:3306/databasename?", "root", "root")
},
"select * from tablename where a >= and b <=;",
分区数,
获取实例的列数,
打印记录数
)
Spark写入数据
保存普通文本文件
rddText.saveAsTextFile(path)
保存JSON文件
先把数据封装到List集合中,并生成JSONArray对象,然后把该对象放到Map集合中。
val map1 = Map(JSON(List("内容")))
val rddData = sc.parallelize(List(JSONObject(map1)))
rddData.saveAsTextFile(path)
保存SequenceFile文件
rddData.saveAsSequenceFile(path)
保存Object文件
rddData.saveAsObjectFile(path)
保存HDFS文件
//用saveAsTextFile()
saveAsTextFile("hdfs://")
//用saveAsNewAPIHadoopFile()
rddData.saveAsNewAPIHadoopFIle(path, classOf[Text], classOf[IntWritable], classOf[TextOutputFormat[Text, IntWritable]])