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.