我来自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\"}", "{...
......表示模式重复未知次数。
我的问题
如何提取此信息并将其放在平面数据框中?理想情况下,我想为嵌套数组列中的每个观察点创建一个FromStationCode
和FromStationName
列。我尝试了explode
和getItem
的各种组合......但无济于事。我一直收到数据类型不匹配错误。我在Spark中搜索过这个挑战的其他人的例子,但是SparkR的例子更加稀缺。我希望有更多使用Spark / SparkR经验的人可以提供一些见解。
非常感谢, 内特
答案 0 :(得分:0)
我猜您需要将tst转换为通常的R对象
df = collect(tst)
然后你使用df操作,就像使用任何其他R data.frame
一样