本文介绍了在Spark Scala中将DataFrame转换为HDFS的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个格式为org.apache.spark.sql.DataFrame = [user_key:string,field1:string]的spark数据帧.当我使用saveAsTextFile将文件保存在hdfs中时,结果看起来像[12345,xxxxx].我不想将开始和结束括号写入输出文件.如果我使用.rdd转换为RDD,则仍在RDD中使用方括号.

I have a spark data frame of the format org.apache.spark.sql.DataFrame = [user_key: string, field1: string]. When I use saveAsTextFile to save the file in hdfs results look like [12345,xxxxx]. I don't want the opening and closing bracket written to output file. if i used .rdd to convert into a RDD still the brackets are present in the RDD.

谢谢

推荐答案

只需连接值并存储字符串:

Just concatenate the values and store strings:

import org.apache.spark.sql.functions.{concat_ws, col}
import org.apache.spark.sql.Row

val expr = concat_ws(",", df.columns.map(col): _*)
df.select(expr).map(_.getString(0)).saveAsTextFile("some_path")

或者甚至更好地使用spark-csv:

selectedData.write
  .format("com.databricks.spark.csv")
  .option("header", "false")
  .save("some_path")

另一种方法是简单地map:

df.rdd.map(_.toSeq.map(_.toString).mkString(","))

然后保存.

这篇关于在Spark Scala中将DataFrame转换为HDFS的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-01 04:52