Фрейм данных Spark объединяет несколько столбцов в один с дополнительными столбцами в некоторой строке с помощью Java

#scala #apache-spark #apache-spark-sql

Вопрос:

У меня есть фрейм данных Spark. Я хочу объединить несколько столбцов в один, при этом в некоторых строках отсутствуют некоторые из упомянутых столбцов в конкате

 id  mid colA colB
1   1    X     T
2   1    R
3   2          P
 

Если я использую

 df.withColumn("colC", functions.concat("colA","colB")).drop("colA").drop("colB")
 

он только возвращается

 id  mid  colC
1   1     X
1   1     T
2   1     null
3   2     null
 

поскольку вторая и третья строки входных данных не имеют значения как для colA, так и для ColB

Комментарии:

1. как насчет того, чтобы сначала заменить пустые поля на "" ?

2. Ваши выходные данные не совпадают с кодом, который вы использовали. Используете ли вы также какие-либо другие операции, которые вы, возможно, пропустили здесь?

Ответ №1:

 import org.apache.spark.sql.functions._

df.na.fill("", Seq("colA", "colB"))
 .withColumn("colC", concat(col("colA"), col("colB")))