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 |
Map_values (Harita | Girdi haritasının değerlerini içeren bir dizi getirecek ve verecektir. Burada dizi sırasızdır | |
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.