spark的输入输出
1.文本文件的输入、输出
1.sc.textFile(path)
文本文件的输入。
2.rdd.saveAsTextFile(path)
文本文件的输出。
2.JSON文件的输入、输出
实质上是文本文件的输入、输出,需要在程序中手动进行编码与解码。
3.CSV\TSV
CSV逗号分割,TSV tab分割,文本文件输入、输出。
4.SequenceFile文件输入、输出
val sdata = sc.sequenceFile[Int,String](“hdfs://master:9000/sdata/p*”)
对于读取来说,需要将KV的类型指定一下。
直接调用rdd.saveAsSequenceFile(path)
来进行保存。
5.ObjectFile的输入、输出
val objrdd:RDD[(Int,String)] = sc.objectFile[(Int,String)](“hdfs://master:9000/objfile/p*”)
对于读取来说,需要设定KV的类型。
直接调用objrdd.saveAsObjectFile(path)
来进行保存。
6.Hadoop输入、输出
1.输入
1)针对旧的hadoop API来说
提供了hadoopFile
以及hadoopRDD
来进行hadoop的输入和输出。
2)针对新的hadoop API来说
提供了newApiHadoopFile
以及newApiHadoopRDD
来进行hadoop的输入和输出。
2.输出
1)针对旧的hadoop API来说
提供了saveAsHadoopFile
以及saveAsHadoopDataSet
来进行hadoop的输出。
2)针对新的hadoop API来说
提供了saveAsNewApiHadoopFile
以及saveAsNewApiHadoopDataSet
来进行Hadoop的输出。
3.写入:
val data = sc.parallelize(Array((30,"hadoop"),(71,"hive"),(11,"cat")))
data.saveAsNewAPIHadoopFile("hdfs://master:9000/output/",classOf[org.apache.hadoop.io.LongWritable],classOf[org.apache.hadoop.io.Text],classOf[org.apache.hadoop.mapreduce.lib.output.TextOutputFormat[org.apache.hadoop.io.LongWritable,org.apache.hadoop.io.Text]])
4.读出:
val read = sc.newAPIHadoopFile[LongWritable,Text,org.apache.hadoop.mapreduce.lib.input.TextInputFormat]("hdfs://master:9000/output/part*",classOf[TextInputFormat],classOf[LongWritable],classOf[Text])