Kovan İşlevi: Yerleşik ve amp; UDF (Kullanıcı Tanımlı İşlevler)

İçindekiler:

Anonim

Fonksiyonlar, tablo sütun adlarının işlenenleri üzerinde Matematiksel, aritmetik, mantıksal ve ilişkisel gibi işlemleri gerçekleştirmek için belirli bir amaç için oluşturulmuştur.

Yerleşik işlevler

Bunlar, Hive'da zaten mevcut olan işlevlerdir. Öncelikle uygulama gereksinimini kontrol etmeliyiz ve sonra bu yerleşik fonksiyonları uygulamalarımızda kullanabiliriz. Bu fonksiyonları doğrudan uygulamamızda adlandırabiliriz.

Sözdizimi ve türler aşağıdaki bölümde anlatılmaktadır.

HIVE'daki Yerleşik İşlev Türleri

  • Koleksiyon İşlevleri
  • Tarih İşlevleri
  • Matematiksel Fonksiyonlar
  • Koşullu İşlevler
  • Dize İşlevleri
  • Misc. Fonksiyonlar

Koleksiyon İşlevleri:

Bu işlevler koleksiyonlar için kullanılır. Koleksiyonlar, öğelerin gruplandırılması ve tek veya dizi öğelerin döndürülmesinin, işlev adında belirtilen dönüş türüne bağlı olduğu anlamına gelir.

Dönüş Tipi Fonksiyon adı Açıklama
INT boyut (Harita ) Harita türünde bileşen numarasını alacak ve verecektir.
INT boyut (Dizi ) Dizi türündeki eleman sayısını alacak ve verecektir.
Dizi Map_keys (Harita ) Girdi haritasının anahtarlarını içeren bir dizi getirecek ve verecektir. Burada dizi sırasızdır
dizisi Map_values ​​(Harita ) Girdi haritasının değerlerini içeren bir dizi getirecek ve verecektir. Burada dizi sırasızdır
dizisi Sort_array (Dizi ) girdi dizisini dizi ve elemanların artan sırasına göre sıralar ve döndürür

Tarih İşlevleri:

Bunlar, Tarih Manipülasyonları ve Tarih türlerinin bir türden diğerine Dönüştürülmesi gerçekleştirmek için kullanılır:

Fonksiyon adı Dönüş Tipi Açıklama
Unix_Timestamp () BigInt Güncel Unix zaman damgasını saniyeler içinde alacağız
To_date (dize zaman damgası) dizi Bir zaman damgası dizesinin tarih bölümünü alır ve verir:
yıl (dize tarihi) INT Bir tarihin veya zaman damgası dizesinin yıl bölümünü alacak ve verecektir.
çeyrek (tarih / zaman damgası / dize) INT 1 ile 4 arasındaki bir tarih, zaman damgası veya dize için yılın çeyreğini alacak ve verecektir.
ay (dize tarihi) INT Bir tarihin ay bölümünü veya zaman damgası dizesini verecektir
saat (dize tarihi) INT Getirecek ve zaman damgasının saatini verecektir
dakika (dize tarihi) INT Alacak ve zaman damgasının dakikasını verecek
Date_sub (dize başlangıç ​​tarihi, int günler) dizi Getirecek ve Çıkarma başlangıç ​​tarihine kadar gün sayısı verecektir.
Geçerli tarih tarih Sorgu değerlendirmesinin başlangıcındaki güncel tarihi alacak ve verecektir.
LAST _day (dize tarihi) dizi Getirecek ve tarihin ait olduğu ayın son gününü verecektir.
trunc (dize tarihi, dize biçimi) dizi Biçim tarafından belirtilen birime kesilmiş tarihi getirecek ve verecektir. Bunda desteklenen biçimler: AY / AY / AA, YIL / YYYY / YY.

Matematiksel Fonksiyonlar :

Bu işlevler Matematiksel İşlemler için kullanılır. UDF'ler oluşturmak yerine, Hive'da bazı yerleşik matematiksel işlevlere sahibiz.

Fonksiyon adı Dönüş Tipi Açıklama
yuvarlak (DOUBLE X) ÇİFT X'in yuvarlanmış BIGINT değerini alır ve döndürür.
yuvarlak (DOUBLE X, INT d) ÇİFT X'i d ondalık basamağa yuvarlayarak getirir ve döndürür
bround (DOUBLE X) ÇİFT HALF_EVEN yuvarlama modunu kullanarak X'in yuvarlanmış BIGINT değerini alır ve döndürür.
kat (ÇİFT X) BÜYÜK X değerine eşit veya daha küçük olan maksimum BIGINT değerini alır ve döndürür.
tavan (DOUBLE a), tavan (DOUBLE a) BÜYÜK X değerine eşit veya daha büyük olan minimum BIGINT değerini alır ve döndürür.
rand (), rand (INT tohum) ÇİFT 0'dan 1'e eşit olarak dağıtılan rastgele bir sayıyı alır ve döndürür.

Koşullu İşlevler:

Koşullu değer kontrolleri için kullanılan bu işlevler.

Fonksiyon adı Dönüş Tipi Açıklama
if (Boolean testCondition, T valueTrue, T valueFalseOrNull) T Test Koşulu doğru olduğunda alır ve True değerini verir, aksi takdirde False Or Null değerini verir.
ISNULL (X) Boole X NULL ise ve aksi takdirde false ise getirecek ve doğru verecektir.
ISNOTNULL (X) Boole X NULL değilse, doğru ve aksi takdirde false getirecek ve verecektir.

Dize İşlevleri:

Dize işlemleri ve dizgi işlemleri bu işlevler çağrılabilir.

Fonksiyon adı Dönüş Tipi Açıklama
ters (X dizisi) dizi Ters X dizgisini verecektir.
rpad (string str, int length, string pad) dizi Bir uzunluk uzunluğuna (tamsayı değeri) ped ile sağ yastıklı olan str'yi getirecek ve verecektir.
rtrim (X dizesi) dizi X'in sonundaki (sağ taraftaki) boşlukların kırpılmasından kaynaklanan dizeyi alır ve döndürür Örneğin , rtrim ('sonuçlar') 'sonuçlar' ile sonuçlanır
boşluk (INT n) dizi Getirecek ve bir dizi n boşluk verir.
böl (STRING str, STRING pat) dizi Dizeyi pat etrafında böler (pat normal bir ifadedir).
Str_to_map (metin [, ayırıcı1, ayırıcı2]) map Metni, iki sınırlayıcı kullanarak anahtar / değer çiftlerine böler.

UDF'ler (Kullanıcı Tanımlı İşlevler):

Hive'da kullanıcılar, belirli müşteri gereksinimlerini karşılamak için kendi işlevlerini tanımlayabilir. Bunlar Hive'daki UDF'ler olarak bilinir. Belirli modüller için Java ile yazılmış Kullanıcı Tanımlı İşlevler.

Bazı UDF'ler, kodun uygulama çerçevelerinde yeniden kullanılabilirliği için özel olarak tasarlanmıştır. Geliştirici, bu işlevleri Java'da geliştirecek ve bu UDF'leri Hive ile entegre edecek.

Sorgu yürütme sırasında, geliştirici kodu doğrudan kullanabilir ve UDF'ler kullanıcı tanımlı görevlere göre çıktılar döndürür. Kodlama ve çalıştırma açısından yüksek performans sağlayacaktır.

Örneğin, dizge türetme için Hive'da önceden tanımlanmış bir fonksiyonumuz yoktur, bunun için Java'da stem UDF yazabiliriz. Stem işlevselliğine ihtiyaç duyduğumuz her yerde, doğrudan bu Stem UDF in Hive adını verebiliriz.

Burada kök işlevselliği, kelimeleri kök kelimelerinden türetmek anlamına gelir. Sanki kök belirleme algoritması "dilek", "dilek" ve "dilek" kelimelerini "dilek" köküne indirgiyor. Bu tip işlevselliği gerçekleştirmek için java'da UDF yazıp Hive ile entegre edebiliriz.

Kullanım durumlarına bağlı olarak UDF'ler yazılabilir, farklı sayıda giriş ve çıkış değerleri kabul eder ve üretir.

Genel UDF türü, tek giriş değerini kabul eder ve tek bir çıkış değeri üretir. Sorguda UDF kullanılıyorsa, sonuç veri kümesindeki her satır için UDF bir kez çağrılacaktır.

Diğer bir şekilde, bir grup değeri girdi olarak kabul edebilir ve tek bir çıktı değeri de döndürebilir.