我想将DF导出到文本文件。
将其导出为文本文件有两个问题。
-
它有46列,错误日志说仅文本支持1列。
-
我希望文件正在滚动fie表示我想要同一文件存储下一个运行的结果。
你能建议我吗?
有两种写出数据框的方法。最简单的方法是使用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]