Spark SQL は、マップや配列など、データ フレームに格納されている複合型のクエリをサポートしています。このガイドでは、ネストされたデータ構造にアクセスして操作するための構文と方法の概要を説明します。
<code>df.select($"arrayColumn".getItem(index)).show</code>
ここで、index は配列内の必要な要素の位置を表します。
<code>sqlContext.sql("SELECT arrayColumn[index] FROM df").show</code>
<code>val get_ith = udf((xs: Seq[Int], i: Int) => Try(xs(i)).toOption) df.select(get_ith($"arrayColumn", lit(index))).show</code>
Spark 2.4 では、配列の操作に使用できる filter、transform、aggregate、array_* 関数などの組み込み関数が導入されています。
<code>df.selectExpr("filter(arrayColumn, x -> x % 2 == 0) arrayColumn_even").show</code>
<code>df.selectExpr("transform(arrayColumn, x -> x + 1) arrayColumn_inc").show</code>
<code>df.selectExpr("aggregate(arrayColumn, 0, (acc, x) -> acc + x, acc -> acc) arrayColumn_sum").show</code>
<code>df.select($"mapColumn".getField("key")).show</code>
ここで、 key はマップ内の必要なキーの名前を表します。
<code>sqlContext.sql("SELECT mapColumn['key'] FROM df").show</code>
<code>df.select($"mapColumn.key").show</code>
<code>val get_field = udf((kvs: Map[String, String], k: String) => kvs.get(k)) df.select(get_field($"mapColumn", lit("key"))).show</code>
<code>df.select($"structColumn.field").show</code>
このうち、field は構造内の必須フィールドの名前を表します。
ネストされた構造体配列のフィールドには、ドット構文、フィールド名、および Column メソッドの組み合わせを使用してアクセスできます。
<code>df.select($"nestedArrayColumn.foo").show</code>
<code>df.select($"nestedArrayColumn.vals".getItem(index).getItem(innerIndex)).show</code>
以上がネストされたデータ構造 (マップ、配列、構造体) を使用して Spark SQL データフレームをクエリするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。