Artikel ini bertujuan untuk memperkenalkan secara menyeluruh cara membuat pertanyaan jenis kompleks seperti peta dan tatasusunan dalam Spark SQL DataFrame. Ia membincangkan pelbagai teknik dan fungsi untuk mengakses dan memanipulasi data bersarang dengan cekap.
Spark SQL menyokong pelbagai kaedah untuk mendapatkan semula elemen daripada tatasusunan:
kaedah getItem: Ekstrak elemen khusus berdasarkan indeks.
<code> df.select($"an_array".getItem(1)).show</code>
Sintaks kurungan segi empat sama Hive: Akses elemen indeks menggunakan kurungan segi empat sama gaya Hive.
<code> sqlContext.sql("SELECT an_array[1] FROM df").show</code>
UDF: Gunakan fungsi takrif pengguna (UDF) untuk menentukan indeks dinamik.
<code> val get_ith = udf((xs: Seq[Int], i: Int) => Try(xs(i)).toOption) df.select(get_ith($"an_array", lit(1))).show</code>
Untuk mendapatkan semula pasangan nilai kunci daripada peta:
kaedah getField: Gunakan kaedah getField untuk mengakses nilai tertentu dengan kunci.
<code> df.select($"a_map".getField("foo")).show</code>
Sintaks kurungan segi empat sama Hive: Gunakan kurungan segi empat sama gaya Hive untuk mengakses nilai melalui kekunci.
<code> sqlContext.sql("SELECT a_map['foz'] FROM df").show</code>
Sintaks laluan penuh: Gunakan sintaks titik untuk mengakses nilai melalui kunci.
<code> df.select($"a_map.foo").show</code>
Untuk mengakses medan dalam struktur:
Sintaks titik: Gunakan sintaks titik untuk mendapatkan semula medan struktur.
<code> df.select($"a_struct.x").show</code>
Tatasusunan bersarang: Medan dalam tatasusunan struktur boleh diakses menggunakan sintaks titik bersama-sama dengan kaedah getItem.
<code> df.select($"an_array_of_structs.foo").show</code>
UDT: Medan jenis takrif pengguna (UDT) boleh diakses menggunakan UDF.
Atas ialah kandungan terperinci Bagaimana untuk Menyoal Lajur Bersarang (Peta, Tatasusunan, Struktur) dengan Berkesan dalam Spark SQL DataFrames?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!