У меня есть нечто подобное требование, найденное в другом вопросе. Ниже приведена строка json, здесь, как вы видите, Y является типом Struct. У меня есть требование, где я получаю строковый тип данных NULL вместо типа Struct (без дочерних столбцов). Это терпит неудачу с "нужно тип структуры, но получил строку; строка 1". Я попытался создать UDF с типом (столбец), он не работает, всегда с ошибкой выше. Я пытался использовать dtypes, не повезло. Любая помощь с благодарностью. Спасибо.
from pyspark import SQLContext
sqlContext = SQLContext(sc)
data_df = sqlContext.read.json("data.json", multiLine = True)
data_df.printSchema()
root
|-- x: long (nullable = true)
|-- y: struct (nullable = true)
| |-- p: struct (nullable = true)
| | |-- name: string (nullable = true)
| | |-- value: long (nullable = true)
| |-- q: struct (nullable = true)
| | |-- name: string (nullable = true)
| | |-- value: long (nullable = true)
{"x": "12", "y": {"p": {"name": "ab c", "value": "10"}, "q": {"name": "pqr", "value": "20"}}}
Другая строка json с Y в качестве нулевого значения, немногие записи имеют тип структуры, немногие - с нулевым. {"x": "12", "y": null}