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]])
posted @ 2020-10-27 09:34  Tanglement  阅读(585)  评论(0编辑  收藏  举报