在 Java 中使用 Apache Spark,我有:
root
|-- datasetid: string (nullable = true)
|-- fields: struct (nullable = true)
...
| |-- latlon: array (nullable = true)
| | |-- element: double (containsNull = true)
这是基于这个 JSON 片段:
"fields":{
"latlon":[
35.9543748,
-78.9944911
],
我试图使用以下方法将数据提取到列中:
df = df.withColumn("lat", df.col("fields.latlon[0]"));
df = df.withColumn("lon", df.col("fields.latlon[1]"));
(我希望您欣赏语法的简洁性)。然而,我必须承认它并没有真正起作用:
No such struct field latlon[1] in
我尝试了一些其他的东西,但运气不佳......
最佳答案
使用代码
df.withColumn("lat", $"fields.latlon".getItem(0))
.withColumn("lon", $"fields.latlon".getItem(1))
使用sql
df.registerTempTable("geo")
latlon = sqlContext.sql("select fields.latlon[0] as lat, fields.latlon[1] as lon from geo")
关于java - 数组中的 2 个值到我的 DataFrame 中的 2 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38194908/