SparkR,将一列嵌套的JSON字符串拆分为列

时间:2017-03-30 18:35:57

标签: json r spark-dataframe sparkr array-column

我来自R,是SparkR的新手,并尝试将JSON字符串的SparkDataFrame列拆分为相应的列。 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))我可以看到SparkDataFrame的FromStation列在每行中都有这样的表单:

list("{\"Code\":\"ABCDE\",\"Name\":\"StationA\"}", "{\"Code\":\"WXYZP\",\"Name\":\"StationB\"}", "{...

......表示模式重复未知次数。

我的问题

如何提取此信息并将其放在平面数据框中?理想情况下,我想为嵌套数组列中的每个观察点创建一个FromStationCodeFromStationName列。我尝试了explodegetItem的各种组合......但无济于事。我一直收到数据类型不匹配错误。我在Spark中搜索过这个挑战的其他人的例子,但是SparkR的例子更加稀缺。我希望有更多使用Spark / SparkR经验的人可以提供一些见解。

非常感谢, 内特

1 个答案:

答案 0 :(得分:0)

我猜您需要将tst转换为通常的R对象

df = collect(tst)

然后你使用df操作,就像使用任何其他R data.frame

一样