如何在 spark scala 中使用自定义分隔符(ctrl-A 分隔)文件编写数据帧/RDD? [英] How do you write a dataframe/RDD with custom delimeiter (ctrl-A delimited) file in spark scala?
问题描述
我正在处理 poc,我需要在其中创建数据帧,然后将其保存为 ctrl 分隔文件.我创建中间结果的查询如下
I am working over poc in which I need to create dataframe and then save it as ctrl A delimited file. My query to create intermediate result is below
val grouped = results.groupBy("club_data","student_id_add","student_id").agg(sum(results("amount").cast(IntegerType)).as("amount"),count("amount").as("cnt")).filter((length(trim($"student_id")) > 1) && ($"student_id").isNotNull)
将结果保存在文本文件中
Saving result in text file
grouped.select($"club_data", $"student_id_add", $"amount",$"cnt").rdd.saveAsTextFile("/amit/spark/output4/")
输出:
[amit,DI^A356035,581,1]
它将数据保存为逗号分隔,但我需要将其另存为 ctrl-A 单独我尝试了 option("delimiter", "\u0001") 但似乎它不受 dataframe/rdd 支持.
It saves data as comma separated but I need to save it as ctrl-A separate I tried option("delimiter", "\u0001") but seems it's not supported by dataframe/rdd.
有什么有用的功能吗?
推荐答案
如果你有一个数据框,你可以使用 Spark-CSV 写成一个带有分隔符的 csv,如下所示.
If you have a dataframe you can use Spark-CSV to write as a csv with delimiter as below.
df.write.mode(SaveMode.Overwrite).option("delimiter", "\u0001").csv("outputCSV")
使用旧版本的 Spark
With Older version of Spark
df.write
.format("com.databricks.spark.csv")
.option("delimiter", "\u0001")
.mode(SaveMode.Overwrite)
.save("outputCSV")
您可以阅读以下内容
spark.read.option("delimiter", "\u0001").csv("outputCSV").show()
如果你有一个 RDD,那么你可以在 RDD
上使用 mkString()
函数并用 saveAsTextFile()
保存
IF you have an RDD than you can use mkString()
function on RDD
and save with saveAsTextFile()
rdd.map(r => r.mkString(\u0001")).saveAsTextFile("outputCSV")
希望这会有所帮助!
这篇关于如何在 spark scala 中使用自定义分隔符(ctrl-A 分隔)文件编写数据帧/RDD?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!