#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")))