2017-02-26 28 views
1

我想将DF导出为文本文件。SPARK SCALA将DF导出为TextFile

将文件导出为文本文件有两个问题。

  1. 它有46列,错误日志说文本只支持1列。

  2. 我想要文件滚动fie意味着我希望同一个文件存储下一次运行的结果。

你能告诉我方式吗?

回答

2

有两种写出数据帧的方法。最简单的方法是使用Spark SQL API写出文件,但也可以使用RDD API(请注意,它将用RDD API作为单个列写出)。

关于作为滚动文件写出,我不确定这是可能的与Spark。它需要打开Spark中的前一个文件,联合数据,然后将其写回磁盘。你可能会更好使用增量文件名,它可以作为单个文件加载。

示例代码用于保存DF为CSV:

val exampleDF = spark.read.option("header","true").option("inferSchema","true").format("csv").load("example.csv") 

exampleDF.write.csv("example.out") 

火花SQL DF实施例结果:

1,0,3,Braund, Mr. Owen Harris,male,22.0,1,0,A/5 21171,7.25,null,S 
2,1,1,Cumings, Mrs. John Bradley (Florence Briggs Thayer),female,38.0,1,0,PC 17599,71.2833,C85,C 
3,1,3,Heikkinen, Miss. Laina,female,26.0,0,0,STON/O2. 3101282,7.925,null,S 
4,1,1,Futrelle, Mrs. Jacques Heath (Lily May Peel),female,35.0,1,0,113803,53.1,C123,S 



示例代码用于保存RDD为文本:

val exampleDF = spark.read.option("header","true").option("inferSchema","true").format("csv").load("example.csv") 

exampleDF.rdd.saveAsTextFile("example.out") 

RDD示例结果:

[1,0,3,Braund, Mr. Owen Harris,male,22.0,1,0,A/5 21171,7.25,null,S] 
[2,1,1,Cumings, Mrs. John Bradley (Florence Briggs Thayer),female,38.0,1,0,PC 17599,71.2833,C85,C] 
[3,1,3,Heikkinen, Miss. Laina,female,26.0,0,0,STON/O2. 3101282,7.925,null,S] 
[4,1,1,Futrelle, Mrs. Jacques Heath (Lily May Peel),female,35.0,1,0,113803,53.1,C123,S]