解析数据帧并将输出存储在单个文件中

时间:2018-11-10 08:59:54

标签: scala apache-spark apache-spark-sql

我在Scala中有一个使用Spark SQL的数据框,其中A和B列的值是:

setEnabled(false)

我需要以以下格式将输出存储到单个文本文件中

A | B
1 a|b|c
2 b|d
3 d|e|f  

我该怎么做?

2 个答案:

答案 0 :(得分:2)

您可以通过展开和拆分获得所需的数据框:

val resultDF = df.withColumn("B", explode(split($"B", "\\|")))

结果

+---+---+
|  A|  B|
+---+---+
|  1|  a|
|  1|  b|
|  1|  c|
|  2|  b|
|  2|  d|
|  3|  d|
|  3|  e|
|  3|  f|
+---+---+

然后,您可以将合并(1)保存在单个文件中

  resultDF.coalesce(1).rdd.saveAsTextFile("desiredPath")

答案 1 :(得分:0)

您可以做类似的事情,

val df = ???
val resDF =df.withColumn("B", explode(split(col("B"), "\\|")))

resDF.coalesce(1).write.option("delimiter", " ").csv("path/to/file")