pyspark — как добавить экспресс в withColumn

#apache-spark #pyspark

#apache-spark #pyspark

Вопрос:

Я хотел добавить новый столбец, который представляет собой объединение двух существующих столбцов, и я использую следующий запрос: В чем проблема с этим запросом? Я вижу «null» для новых столбцов

 df.select(df['DEST_COUNTRY_NAME'],df['ORIGIN_COUNTRY_NAME']).withColumn("COMPLETE_PATH",df['DEST_COUNTRY_NAME']   ",").filter(df['DEST_COUNTRY_NAME']=='Egypt').show()

 ----------------- ------------------- ------------- 
|DEST_COUNTRY_NAME|ORIGIN_COUNTRY_NAME|COMPLETE_PATH|
 ----------------- ------------------- ------------- 
|            Egypt|      United States|         null|
|            Egypt|      United States|         null|
|            Egypt|      United States|         null|
|            Egypt|      United States|         null|
|            Egypt|      United States|         null|
|            Egypt|      United States|         null|
 ----------------- ------------------- ------------- 
  

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

1. spark.apache.org/docs/2.3.4/api/python/…

2. Есть ли причина, по которой эти функции необходимо использовать, а не обычные функции python?

3. ДА. вы работаете с фреймом данных spark, а не с фреймом данных pandas. таким образом, ваш фрейм данных обрабатывается spark, который использует язык scala, который использует JVM … итак, если вы хотите использовать простые функции / синтаксис python, вам нужно создать UDF.

Ответ №1:

Попробуйте:

 import org.apache.spark.sql.functions.concat
...
df.withColumn(concat(col("DEST_COUNTRY_NAME"), lit(",")))