如何在 spark scala 中使用自定义分隔符(ctrl-A 分隔)文件编写数据帧/RDD? [英] How do you write a dataframe/RDD with custom delimeiter (ctrl-A delimited) file in spark scala?

查看:62
本文介绍了如何在 spark scala 中使用自定义分隔符(ctrl-A 分隔)文件编写数据帧/RDD?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在处理 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆