【发布时间】:2018-04-12 09:01:50
【问题描述】:
我有一个包含嵌套数组的 json 文件,如下所示,
| | |-- coordinates: array (nullable = true)
| | | |-- element: array (containsNull = true)
| | | | |-- element: array (containsNull = true)
| | | | | |-- element: array (containsNull = true)
| | | | | | |-- element: long (containsNull = true)
我已经使用Spark读取json并爆炸了数组。
explode(col("list_of_features.geometry.coordinates"))
返回值如下,
WrappedArray(WrappedArray(WrappedArray(1271700, 6404100), WrappedArray(1271700, 6404200), WrappedArray(1271600, 6404200), WrappedArray(1271600, 6404300),....
但原始输入看起来没有 WrappedArray。
类似的,
[[[[1271700,6404100],[1271700, 6404200],[1271600, 6404200]
最终目的是将没有WrappedArray的坐标(可能是字符串)存储在csv文件中,供Hive读取数据。
explode 之后有没有办法只用适当的方括号括起来的坐标。
或者我可以使用replace替换RDD中的WrappedArray字符串值吗?
【问题讨论】:
-
我不知道包装数组,但你应该能够编写一个递归函数来返回你需要的东西。也许有一个更清洁的选择。
标签: json apache-spark apache-spark-sql spark-dataframe