2017-11-06 14 views
-1

私はFIELDBの_2の値で照会するようなスキーマのDATAFRAME構造体の値でDataFrameをクエリするにはどうすればよいですか?

a.printSchema() 
root 
|-- fieldA: long (nullable = false) 
|-- fieldB: struct (nullable = true) 
| |-- _1: string(nullable = true) 
| |-- _2: long (nullable = false) 

があります。

fieldA、 'a.where( "fieldA = 1234")。show()'の値でクエリを実行するかどうかはわかります。しかし、私は構造体内の値でどのようにクエリを行うのか分かりません。

私は良いヒントを、またはとにかく感謝してください。

答えて

0

あなたはあなたのケースのために、field.subfield構造体要素にアクセスすることができます

a.where("fieldB._2 = 123") 

val df = Seq((1L, ("a", 2L)), (2L, ("b", 3L))).toDF("A", "B") 
// df: org.apache.spark.sql.DataFrame = [A: bigint, B: struct<_1: string, _2: bigint>] 

df.printSchema 
root 
|-- A: long (nullable = false) 
|-- B: struct (nullable = true) 
| |-- _1: string (nullable = true) 
| |-- _2: long (nullable = false) 


df.where("B._2 = 3").show 
+---+-----+ 
| A| B| 
+---+-----+ 
| 2|[b,3]| 
+---+-----+ 
+0

ありがとうございました!私は本当にそれが欲しい。 –

関連する問題