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 adalah bagian dari kursus
Pengantar Spark SQL dalam Python
Petunjuk 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 praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
# 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 '', ____())