SparkR, разбить столбец вложенных строк JSON на столбцы
Я пришел из R, новичок в SparkR, и пытаюсь разбить столбец SparkDataFrame строк JSON на соответствующие столбцы. Столбцы в Spark DataFrame являются массивами со схемой, подобной этой:
> printSchema(tst)
root
|-- FromStation: array (nullable = true)
| |-- element: string (containsNull = true)
|-- ToStation: array (nullable = true)
| |-- element: string (containsNull = true)
Если я смотрю на данные в средстве просмотра, View(head(tst$FromStation))
Я вижу, что столбец FromStation в SparkDataFrame имеет такую форму в каждой строке:
list("{\"Code\":\"ABCDE\",\"Name\":\"StationA\"}", "{\"Code\":\"WXYZP\",\"Name\":\"StationB\"}", "{...
Где... указывает, что образец повторяется неизвестное количество раз.
Мой вопрос
Как извлечь эту информацию и поместить ее в плоский кадр данных? В идеале я хотел бы сделать FromStationCode
а также FromStationName
столбец для каждого наблюдения в столбце вложенного массива. Я пробовал различные комбинации explode
а также getItem
... но безрезультатно. Я продолжаю получать ошибку несоответствия типов данных. Я искал примеры других людей с этой проблемой в Spark, но примеры SparkR более редки. Я надеюсь, что кто-то с большим опытом использования Spark / SparkR сможет дать некоторое представление.
Большое спасибо, Нейт
1 ответ
Я думаю, вам нужно преобразовать TST в обычный объект R
df = collect(tst)
Затем вы работаете с df, как и с любым другим R data.frame.