【问题标题】:DataFrame to HDFS in spark scalaSpark Scala中的DataFrame到HDFS
【发布时间】:2015-12-18 17:47:10
【问题描述】:

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

谢谢

【问题讨论】:

    标签: apache-spark apache-spark-sql


    【解决方案1】:

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

    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(","))
    

    然后保存。

    【讨论】:

    • 感谢您的回复。在生产中,我们有 1.4.2 版本,而 concat_ws 不是这个版本的一部分。但是我能够选择两列,并且只有一列是可访问的。当我使用 map(p=>p(0),p(1)) 时出现错误。谢谢
    猜你喜欢
    • 2022-11-02
    • 1970-01-01
    • 2020-02-13
    • 1970-01-01
    • 2016-10-12
    • 2021-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多