SPARK SCALA将DF导出到TextFile

时间:2017-02-26 21:05:20

标签: scala apache-spark dataframe spark-dataframe

我想将DF导出到文本文件。

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

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

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

  3. 你能指教我吗?

1 个答案:

答案 0 :(得分: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")

Spark 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]