Ami*_*mit 0 scala dataframe apache-spark apache-spark-sql
我在poc工作,我需要创建数据帧,然后将其保存为ctrl一个分隔文件.我创建中间结果的查询如下
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)
Run Code Online (Sandbox Code Playgroud)
将结果保存在文本文件中
grouped.select($"club_data", $"student_id_add", $"amount",$"cnt").rdd.saveAsTextFile("/amit/spark/output4/")
Run Code Online (Sandbox Code Playgroud)
输出:
[amit,DI^A356035,581,1]
Run Code Online (Sandbox Code Playgroud)
它以逗号分隔保存数据,但我需要将其保存为ctrl-A单独的I尝试选项("分隔符","\ u0001")但似乎不受dataframe/rdd支持.
有什么功能有帮助吗?
如果您有数据帧,则可以使用Spark-CSV作为带有分隔符的csv写入,如下所示.
df.write.mode(SaveMode.Overwrite).option("delimiter", "\u0001").csv("outputCSV")
Run Code Online (Sandbox Code Playgroud)
随着旧版本的Spark
df.write
.format("com.databricks.spark.csv")
.option("delimiter", "\u0001")
.mode(SaveMode.Overwrite)
.save("outputCSV")
Run Code Online (Sandbox Code Playgroud)
您可以回读如下
spark.read.option("delimiter", "\u0001").csv("outputCSV").show()
Run Code Online (Sandbox Code Playgroud)
如果你有一个RDD,你可以使用mkString()功能RDD并保存saveAsTextFile()
rdd.map(r => r.mkString(\u0001")).saveAsTextFile("outputCSV")
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!