如何 select Pyspark 列并将其作为新行附加到数据框中?

How to select a Pyspark column and append it as new rows in the data frame?

我有一个 JSON 文件,我想执行一些 ETL 任务。 我想提取一列并将其值附加为数据框中的新行。 例如,如果我有这样的数据框:

-----------------------------------------------------------------
|name    |    last    |                  father                 |
-----------------------------------------------------------------
| daniel |  allardice | {'name': 'george', 'last': 'allardice'} |
-----------------------------------------------------------------

我想把它变成:

----------------------------
|    name    |    last     |
----------------------------
|   daniel   |  allardice  |
----------------------------
|   george   |  allardice  |
----------------------------

我如何在 PySpark 中通过 UDF 执行此操作?

你能试试下面的代码吗

from pyspark.sql import functions as F

df_1 = df.select("name","last");

df_2 = df.select(F.col('father').getItem('name').alias('name'), F.col('father')['last'].alias('last'));

result = df_1.union(df_2);