数组中的2个值到我的DataFrame中的2列

时间:2016-07-05 03:46:01

标签: java apache-spark apache-spark-sql spark-dataframe

在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 

我尝试了其他一些没有太多运气的事情......

1 个答案:

答案 0 :(得分:1)

使用代码

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")