#pyspark #apache-spark-sql
#пыспарк #apache-spark-sql
Вопрос:
У меня есть эти 4 кадра данных spark:
order,device,count_1 101,201,2 102,202,4 order,device,count_2 101,201,10 103,203,100 order,device,count_3 104,204,111 103,203,10 order,device,count_4 101,201,4 104,204,11
Я хочу создать результирующий фрейм данных в виде:
order,device,count_1,count_2,count_3,count_4 101,201,2,10,,4, 102,202,4,,,, 103,203,,100,10,, 104,204,,,111,11
Является ли это случаем UNION or JOIN or APPEND
? Как получить конечный результирующий df?
Комментарии:
1. Можете ли вы принять ответ, если он не неверен?
Ответ №1:
Вы можете думать об UNION
объединении таблиц по строкам, поэтому количество строк, скорее всего, увеличится. JOIN
объединяет таблицы по столбцам. Я не совсем понимаю , что вы имеете в виду APPEND
, но в данном случае вы бы хотели JOIN
.
Комментарии:
1.
LEFT JOIN
чтобы быть точным (по умолчаниюINNER JOIN
)
Ответ №2:
Попробуй:
val df1 = Seq((101,201,2), (102,202,4)).toDF("order" ,"device", "count_1") val df2 = Seq((101,201,10), (103,203,100)).toDF("order" ,"device", "count_2") val df3 = Seq((104,204,111), (103,203,10)).toDF("order" ,"device", "count_3") val df4 = Seq((101,201,4), (104,204,11)).toDF("order" ,"device", "count_4") val df12 = df1.join(df2, Seq("order", "device"),"fullouter") df12.show(false) val df123 = df12.join(df3, Seq("order", "device"),"fullouter") df123.show(false) val df1234 = df123.join(df4, Seq("order", "device"),"fullouter") df1234.show(false)
ВОЗВРАТ:
----- ------ ------- ------- ------- ------- |order|device|count_1|count_2|count_3|count_4| ----- ------ ------- ------- ------- ------- |101 |201 |2 |10 |null |4 | |102 |202 |4 |null |null |null | |103 |203 |null |100 |10 |null | |104 |204 |null |null |111 |11 | ----- ------ ------- ------- ------- -------
Как вы можете видеть, комментарии ошибочны, а 1-й ответ неверен.