PySpark Json проверка типа данных - PullRequest
0 голосов
/ 13 февраля 2020

У меня есть нечто подобное требование, найденное в другом вопросе. Ниже приведена строка 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}

...