Ниже приведен игрушечный пример, представляющий собой подмножество моей реальной схемы данных. Я сократил это для краткости.
Я хочу создать фрейм данных PySpark, который содержит 3 поля: ID
, Type
и TIMESTAMP
, которые я бы затем сохранил как таблицу Hive. Я борюсь с кодом PySpark для извлечения соответствующих столбцов.
|-- Records: array (nullable = true)
| |-- element: struct (containsNull = true)
| | |-- FileID: long (nullable = true)
| | |-- SrcFields: struct (nullable = true)
| | | |-- ID: string (nullable = true)
| | | |-- Type: string (nullable = true)
| | | |-- TIMESTAMP: string (nullable = true)
До сих пор я представляю, что мое решение должно выглядеть примерно так:
from pyspark.sql.functions import col, explode
df.withColumn("values", explode("values")).select(
"*", col("values")["name"].alias("name"), col("values")["id"].alias("id")
)
Однако решение выше не ' Я не учел дополнительное вложение моего сценария использования, и я не могу понять, какой дополнительный синтаксис требуется.