2016-07-05 15 views
1

、私が持っている:2の値は、JavaでApacheのスパークを使用して

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

利用コード

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") 
...多くの幸運なしでいくつか他のものを試してみました:しかし、私はそれが実際に動作しない認めなければなりません
+0

恐ろしい@ロッキー!私はちょうどその表記法を静的メソッドcol()を使ってJavaとスケーラを減らしました。ご協力いただきありがとうございます! – jgp

関連する問題