Hive İşlevleri: Yerleşik ve UDF [Kullanıcı Tanımlı İşlevler] Örneği
İşlevler, 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.
Dahili işlevler
Bunlar Hive'da zaten mevcut olan işlevlerdir. Öncelikle uygulama gereksinimini kontrol etmemiz gerekiyor, ardından bu yerleşik işlevleri uygulamalarımızda kullanabiliriz. Bu fonksiyonları doğrudan uygulamamız içerisinde çağırabiliriz.
Sözdizimi ve türleri aşağıdaki bölümde belirtilmiştir.
HIVE'daki Yerleşik İşlev Türleri
- Toplama İşlevleri
- Tarih Fonksiyonları
- Matematiksel Fonksiyonlar
- Koşullu Fonksiyonlar
- Dize İşlevleri
- Çeşitli Fonksiyonlar
Toplama İş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ı getirecek ve verecektir |
INT | boyut(Dizi ) | Dizi tipindeki elemanların numarasını getirecek ve verecektir |
Sıralamak | Map_keys(Harita ) | Giriş haritasının anahtarlarını içeren bir diziyi getirecek ve verecektir. Burada dizi sırasızdır |
Sıralamak | Map_values(Harita ) | Giriş haritasının değerlerini içeren bir diziyi getirecek ve verecektir. Burada dizi sırasızdır |
Sıralamak | Sort_array(Dizi ) | giriş dizisini dizi ve öğelere göre artan sırada sıralar ve döndürür |
Tarih Fonksiyonları
Bunlar, Tarih İşlemeleri ve Tarih türlerinin bir türden diğerine dönüştürülmesini gerçekleştirmek için kullanılır:
Fonksiyon adı | Dönüş Tipi | Açıklama |
---|---|---|
Unix_Timestamp() | BigInt | Güncel olacağız Unix saniye cinsinden zaman damgası |
To_date(dize zaman damgası) | dizi | Bir zaman damgası dizisinin tarih kısmını alıp verecektir: |
yıl(dize tarihi) | INT | Bir tarihin veya zaman damgası dizisinin yıl kısmını alıp verecek |
çeyrek(tarih/zaman damgası/dize) | INT | 1 ila 4 aralığında bir tarih, zaman damgası veya dize için yılın çeyreğini alıp verecektir |
ay(dize tarihi) | INT | Bir tarihin veya zaman damgası dizisinin ay kısmını verecektir |
saat(dize tarihi) | INT | Zaman damgasının saatini getirecek ve verecektir |
dakika(dize tarihi) | INT | Zaman damgasının dakikasını getirecek ve verecektir |
Date_sub(string başlangıç tarihi, int gün sayısı) | dizi | Getirecek ve başlangıç tarihine kadar olan gün sayısının çıkarılmasını verecektir. |
Geçerli tarih | tarih | Sorgu değerlendirmesinin başlangıcında geçerli tarihi getirir ve verir |
LAST _day(dize tarihi) | dizi | Tarihin ait olduğu ayın son gününü getirir ve verir. |
trunc(dize tarihi, dize biçimi) | dizi | Format tarafından belirtilen birime kısaltılmış tarihi getirir ve verir.
Bunda desteklenen formatlar: AY/PZT/AA, YIL/YYYY/YY. |
Matematiksel Fonksiyonlar
Bu işlevler Matematiksel amaçlar için kullanılır. Opera. UDF'ler oluşturmak yerine Hive'da bazı yerleşik matematiksel işlevlere sahibiz.
Fonksiyon adı | Dönüş Tipi | Açıklama |
---|---|---|
yuvarlak(ÇİFT X) | ÇİFT | X'in yuvarlatılmış BIGINT değerini getirecek ve döndürecektir |
yuvarlak(ÇİFT X, INT d) | ÇİFT | X'i d ondalık basamağa yuvarlanmış olarak getirir ve döndürür |
sınır(ÇİFT X) | ÇİFT | HALF_EVEN yuvarlama modunu kullanarak X'in yuvarlanmış BIGINT değerini getirir ve döndürür |
kat(ÇİFT X) | BÜYÜK | X değerine eşit veya ondan küçük olan maksimum BIGINT değerini alıp döndürecektir. |
tavan(ÇİFT a), tavan(ÇİFT a) | BÜYÜK | X değerine eşit veya ondan büyük olan minimum BIGINT değerini alıp döndürecektir. |
rand(), rand(INT tohumu) | ÇİFT | 0'dan 1'e eşit olarak dağıtılan rastgele bir sayıyı alıp döndürecektir. |
Koşullu Fonksiyonlar
Bu işlevler koşullu değer kontrolleri için kullanılır.
Fonksiyon adı | Dönüş Tipi | Açıklama |
---|---|---|
if(Boolean testCondition, T valueTrue, T valueFalseOrNull) | T | Ne zaman getirilecek ve True değerini verecektir Test Durumu doğrudur, aksi halde False veya Null değeri verir. |
ISNULL(X) | Boole | X NULL ise true, aksi halde false değerini getirir. |
BOŞ DEĞİLDİR(X) | Boole | X NULL değilse true, değilse false değerini getirir. |
Dize İşlevleri
String manipülasyonları ve string işlemleri bu işlevler olarak adlandırılabilir.
Fonksiyon adı | Dönüş Tipi | Açıklama |
---|---|---|
ters(dize X) | dizi | X'in ters dizisini verecektir |
rpad(string str, int uzunluk, string pad) | dizi | Uzunluğa kadar pad ile sağdan doldurulmuş olan str'yi getirir ve verir (tamsayı değeri) |
rtrim(dize X) | dizi | X'in sonundaki (sağ taraftaki) boşlukların kırpılmasından kaynaklanan dizeyi getirecek ve döndürecektir Örneğin, rtrim('sonuçlar') 'sonuçlar' ile sonuçlanır |
boşluk(INT n) | dizi | Getirecek ve n boşluktan oluşan bir dizi verecek. |
split(STRING str, STRING pat) | dizi | str'yi pat etrafında böler (pat bir düzenli ifadedir). |
Str_to_map(metin[, sınırlayıcı1, sınırlayıcı2]) | harita | İki sınırlayıcı kullanarak metni 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'da UDF'ler olarak bilinir. Kullanıcı Tanımlı Fonksiyonlar şu dille yazılmıştır: Java belirli modüller için.
Bazı UDF'ler, kodun uygulama çerçevelerinde yeniden kullanılabilirliği için özel olarak tasarlanmıştır. Geliştirici bu işlevleri şu şekilde geliştirecektir: Java ve bu UDF'leri Hive ile entegre edin.
Sorgu yürütme sırasında geliştirici doğrudan kodu kullanabilir ve UDF'ler kullanıcı tanımlı görevlere göre çıktılar döndürecektir. Kodlama ve yürütme açısından yüksek performans sağlayacaktır.
Örneğin, dize köklerini belirlemek için Hive'da önceden tanımlanmış herhangi bir işlevimiz yoktur. Bunun için kök UDF'yi yazabiliriz. Java. Stem işlevselliğine ihtiyaç duyduğumuz her yerde, bu Stem UDF'yi Hive'da doğrudan çağırabiliriz.
Burada kök işlevsellik, sözcüklerin kök sözcüklerinden türetilmesi anlamına gelir. Bu, kök çıkarma algoritmasının "dilek", "dilek" ve "dilekler" kelimelerini "dilek" köküne indirgemesi gibidir. Bu tür bir işlevi gerçekleştirmek için UDF'yi yazabiliriz. Java ve onunla entegre edin kovan.
Kullanım durumlarına bağlı olarak UDF'ler yazılabilir. Farklı sayıda giriş ve çıkış değerlerini kabul edecek ve üretecektir.
Genel UDF türü, tek bir giriş değerini kabul edecek ve tek bir çıkış değeri üretecektir. Sorguda UDF kullanılıyorsa sonuç veri kümesindeki her satır için UDF bir kez çağrılacaktır.
Diğer bir deyişle, bir grup değeri girdi olarak kabul edebilir ve tek bir çıktı değeri de döndürebilir.