Mengakses Data Kompleks dalam Spark SQL DataFrames
Spark SQL menyokong jenis data yang kompleks seperti tatasusunan dan peta. Walau bagaimanapun, pertanyaan ini memerlukan pendekatan khusus. Panduan ini memperincikan cara menanyakan struktur ini dengan berkesan:
Susunan:
Beberapa kaedah wujud untuk mengakses elemen tatasusunan:
getItem
: Kaedah API DataFrame ini mengakses terus elemen mengikut indeks.
df.select($"an_array".getItem(1)).show
Sintaks kurungan Hive: Sintaks seperti SQL ini menawarkan alternatif.
SELECT an_array[1] FROM df
Fungsi Ditentukan Pengguna (UDF): UDF memberikan kefleksibelan untuk manipulasi tatasusunan yang lebih kompleks.
val get_ith = udf((xs: Seq[Int], i: Int) => Try(xs(i)).toOption) df.select(get_ith($"an_array", lit(1))).show
Fungsi terbina dalam: Spark menawarkan fungsi terbina dalam seperti transform
, filter
, aggregate
dan keluarga array_*
untuk pemprosesan tatasusunan.
Peta:
Mengakses nilai peta melibatkan teknik yang serupa:
getField
kaedah: Mengambil nilai menggunakan kekunci.
df.select($"a_map".getField("foo")).show
Sintaks kurungan Hive: Menyediakan pendekatan seperti SQL.
SELECT a_map['foo'] FROM df
Sintaks titik: Cara ringkas untuk mengakses medan peta.
df.select($"a_map.foo").show
UDF: Untuk operasi peta tersuai.
val get_field = udf((kvs: Map[String, String], k: String) => kvs.get(k)) df.select(get_field($"a_map", lit("foo"))).show
*`map_functions:** Functions like
map_keysand
map_values` tersedia untuk manipulasi peta.
Struktur:
Mengakses medan struct adalah mudah:
Sintaks titik: Kaedah paling langsung.
df.select($"a_struct.x").show
SQL Mentah: Alternatif menggunakan sintaks SQL.
SELECT a_struct.x FROM df
Susunan Struktur:
Menyoal struktur bersarang memerlukan gabungan teknik di atas:
Sintaks titik bersarang: Akses medan dalam struct dalam tatasusunan.
df.select($"an_array_of_structs.foo").show
Kaedah gabungan: Menggunakan getItem
untuk mengakses elemen tatasusunan dan kemudian sintaks titik untuk medan struct.
df.select($"an_array_of_structs.vals".getItem(1).getItem(1)).show
Jenis Ditentukan Pengguna (UDT):
UDT biasanya diakses menggunakan UDF.
Pertimbangan Penting:
HiveContext
, bergantung pada versi Spark anda.*
) boleh digunakan dengan sintaks titik untuk memilih berbilang medan.Panduan ini menyediakan gambaran keseluruhan yang komprehensif tentang pertanyaan jenis data kompleks dalam Spark SQL DataFrames. Ingat untuk memilih kaedah yang paling sesuai untuk keperluan khusus anda dan struktur data.
Atas ialah kandungan terperinci Bagaimanakah Saya Menyoal Jenis Data Kompleks (Array, Peta, Struktur) dalam Spark SQL DataFrames?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!