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.

Другие вопросы по тегам