UDF oluşturmayı pratik etme
Bazen verilerin, yerleşik fonksiyonların desteklemediği bir dönüşüme ihtiyaç duyar. İşte bu noktada özel kullanıcı tanımlı fonksiyonlar ("UDF") devreye girer.
SQL fonksiyonu udf kullanılabilir.
DataFrame[doc: array<string>, in: array<string>, out: array<string>] tipinde bir df2 veri çerçevesi mevcut. doc sütunu basit belirteçler içeriyor.
Aşağıdaki kod, doc içinde '1' geçen df2'nin ilk 20 satırını gösterir:
df2.where(array_contains('doc','1')).show()
İki hedefin var:
- Dönüştürülmüş verinin boş olmayan vektörlerden oluşmasını sağla.
- Bir veri çerçevesinde, her bir dizinin tek bir öğe içerdiği, string diziler tutan bir sütun var. Bu sütunu bir stringe dönüştürmek istiyorsun.
Bu egzersiz
Python ile Spark SQL'e Giriş
kursunun bir parçasıdırEgzersiz talimatları
numNonzeros()kullanarak, değer yalnızca ve ancak boş olmayan bir vektör ise true döndüren bir udf oluştur.- Dizinin ilk öğesini döndüren ve onun string gösterimini veren bir udf oluştur.
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
# 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 '', ____())