2

我来自 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 经验的人可以提供一些见解。

非常感谢,内特

4

1 回答 1

0

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

df = collect(tst)

然后你用 df 像任何其他 R data.frame 一样操作

于 2017-04-02T01:46:40.507 回答