【问题标题】:Spark Dataframe to add double quotes to all numeric columnSpark Dataframe 为所有数字列添加双引号
【发布时间】:2020-02-07 03:14:15
【问题描述】:

有没有办法使用scala为spark数据框中的所有数字列添加双引号

我已经浏览了这个文档,但没有配置为数字列添加双引号。

文档链接:https://commons.apache.org/proper/commons-csv/apidocs/org/apache/commons/csv/QuoteMode.html

输入:val someDF = Seq( | ("user1", "math","algebra-1","90"), | ("user1", "physics","gravity","70") | ).toDF("user_id", "course_id","lesson_name","score")

实际输出:

+-------+---------+-----------+-----+
|user_id|course_id|lesson_name|score|
+-------+---------+-----------+-----+
|  user1|     math|  algebra-1|   90|
|  user1|  physics|    gravity|   70|
+-------+---------+-----------+-----+

预期输出:

     someDF.show()
+-------+---------+-----------+-----+
|user_id|course_id|lesson_name|score|
+-------+---------+-----------+-----+
|  user1|     math|  algebra-1| "90"|
|  user1|  physics|    gravity| "70"|
+-------+---------+-----------+-----+
``


【问题讨论】:

  • 您的意思是要将数字列转换为字符串吗?可以提供一些输入输出吗?
  • 我已经更新了问题,请检查。
  • 有什么解决方法吗?只处理数字列
  • 但是你的分数列已经是一个字符串了。 someDF.printSchema root |-- user_id: string (nullable = true) |-- course_id: string (nullable = true) |-- 课程名称: string (nullable = true) |-- score: string (nullable = true) 你希望明确地在分数列的值周围加上引号?
  • 是的...明确地我需要在分数列中添加引号

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


【解决方案1】:

您需要创建一个 UDF 来进行此修改。

创建数据框

scala>val someDF = Seq(("user1", "math","algebra-1","90"),("user1", "physics","gravity","70")).toDF("user_id", "course_id","lesson_name","score")

接下来,创建一个用户定义的函数:

scala>val quoteStr = udf((scoreStr: String) =>  "\""+scoreStr+"\"")

最后,更新列值:

scala>someDF.withColumn("score",quoteStr($"score")).show(false)

+-------+---------+-----------+-----+
|user_id|course_id|lesson_name|score|
+-------+---------+-----------+-----+
|user1  |math     |algebra-1  |"90" |
|user1  |physics  |gravity    |"70" |
+-------+---------+-----------+-----+

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多