Как десериализовать фрейм данных искры в другой фрейм данных

Я пытаюсь десериализовать кадр данных искры в другой кадр данных, как ожидается ниже.

Существующие данные кадра данных:

введите здесь описание изображения

Существующая схема Dataframe:

введите здесь описание изображения

Ожидаемый кадр данных:

введите здесь описание изображения

Может ли кто-нибудь помочь мне в этом?


person Pradeep Kaja    schedule 20.02.2020    source источник
comment
Отвечает ли это на ваш вопрос? Разбить данные массива на строки в spark   -  person RudyVerboven    schedule 20.02.2020


Ответы (1)


Вы можете использовать explode для этого.

from pyspark.sql.functions import explode 
df.withColumn("ns2:fileName", explode(df.ns2:fileName))

ИЗМЕНИТЬ

df.withColumn("result", explode(zip($"ns2:fileName", $"ns2:alias"))).select(
   $"result._1".alias("ns2:fileName"), $"result._2".alias("ns2:alias"))

Возможный дубликат.

person RudyVerboven    schedule 20.02.2020
comment
я пытался, но выдает ошибку ниже NameError: имя «взорваться» не определено - person Pradeep Kaja; 20.02.2020
comment
Я отредактировал свой вопрос. Но, пожалуйста, проверьте повторяющийся вопрос для получения дополнительной информации. - person RudyVerboven; 20.02.2020
comment
Спасибо за предложение, но когда я пытаюсь взорвать только один столбец, я могу это сделать, и я могу правильно видеть данные для первого столбца, но второй столбец не взорван, и попробовал приведенный ниже код ``` project_processed_df1 = project_raw_df.withColumn(ProjectId , взорвать(project_raw_df.ProjectId)).withColumn(ProjectDesc, взорвать(project_raw_df.ProjectDesc)) ``` Вышеприведенный код взорвал оба столбца, но он создал отношение многие ко многим и сделал неправильные данные. Есть идеи? - person Pradeep Kaja; 20.02.2020
comment
Вы можете заархивировать оба столбца массива и взорвать результат zip. я отредактировал свой ответ - person RudyVerboven; 20.02.2020