Spark Dataframe для добавления двойных кавычек во все числовые столбцы - PullRequest
1 голос
/ 09 октября 2019

Есть ли способ добавить двойные кавычки во все числовые столбцы в кадре данных spark, используя scala

Я прошел этот документ, но нет конфигурации для добавления двойных кавычек в числовые столбцы.

Ссылка на документ: 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"|
+-------+---------+-----------+-----+
``


1 Ответ

2 голосов
/ 10 октября 2019

Вам потребуется создать 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" |
+-------+---------+-----------+-----+
...