Latihan membuat UDF
Terkadang data Anda memerlukan transformasi yang tidak didukung oleh fungsi bawaan. Di sinilah custom user defined function ("UDF") cocok digunakan.
Fungsi SQL udf tersedia.
Sebuah dataframe df2 tersedia, bertipe DataFrame[doc: array<string>, in: array<string>, out: array<string>]. Kolom doc berisi token sederhana.
Kode berikut menampilkan 20 baris pertama df2 yang kolom doc-nya mengandung '1':
df2.where(array_contains('doc','1')).show()
Anda memiliki dua tujuan yang perlu dipenuhi:
- Memastikan bahwa data yang ditransformasikan berupa vektor tidak kosong.
- Sebuah dataframe memiliki kolom yang berisi array string, di mana setiap array memiliki satu item. Anda ingin mengubah kolom ini menjadi string.
Latihan ini merupakan bagian dari kursus
Pengantar Spark SQL dalam Python
Instruksi latihan
- Buat sebuah udf yang mengembalikan true jika dan hanya jika nilainya adalah vektor tidak kosong, menggunakan
numNonzeros() - Buat sebuah udf yang mengembalikan elemen pertama dari array dan mengembalikan representasi string-nya.
Latihan interaktif langsung praktik
Cobalah latihan ini dengan melengkapi kode contoh ini.
# Returns true if the value is a nonempty vector
nonempty_udf = udf(lambda x:
True if (x and hasattr(x, "toArray") and x.____())
else False, ____())
# Returns first element of the array as string
s_udf = udf(lambda x: ____(x[0]) if (x and type(x) is list and len(x) > 0)
else '', ____())