Преобразование столбца DataFrame в массив с помощью группировки по ключу - PullRequest
1 голос
/ 03 мая 2020

Я работаю с фреймами данных spark, и мне нужно создать группу по сотруднику столбца, назначению и компании и преобразовать значения столбца сгруппированных строк в массив элементов в качестве нового столбца. Пример:

Input:

employee | Company Address | designation | company | Home Adress
--------------------------------------------------
Micheal  |  NY     | Head        | xyz     | YN
Micheal  |  NJ     | Head        | xyz     | YM

Output:

employee | designation | company | Address
--------------------------------------------------
Micheal  | Head        | xyz     | [Company Address : NY , Home Adress YN], [Company Address : NJ , Home Adress : Ym]

Любая помощь высоко ценится.!

1 Ответ

1 голос
/ 03 мая 2020

Ниже решение в искре для массива вместо json,

from pyspark.sql.functions import *

df1 = sc.parallelize([['Micheal','NY','head','XYZ','YN'], ['Micheal','NJ','head','XYZ','YM']]).toDF(("Employee", "Company Address", "designation", "company","Home Adress"))

df2 = df1.groupBy("Employee", "designation", "company").agg(collect_list(struct(col("Company Address"),col("Home Adress"))).alias("Address"))

df2.show(1,False)

Выход:

+--------+-----------+-------+--------------------+
|Employee|designation|company|Address             |
+--------+-----------+-------+--------------------+
|Micheal |head       |XYZ    |[[NY, YN], [NJ, YM]]|
+--------+-----------+-------+--------------------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...