Hive Sorgu Dili Nedir? HiveQL Operaları
⚡ Akıllı Özet
Hive Sorgu Dili, her HiveQL ifadesini yönlendiren operatörleri sağlar, gruplandırmaping Bunları, karşılaştırma, hesaplama ve iç içe geçmiş verilere erişimi kapsayan ilişkisel, aritmetik, mantıksal, karmaşık tip ve yapıcı aileler halinde sınıflandırırız.
Hive Sorgu Dili (HiveQL) nedir?
Hive Sorgu Dili (HiveQL), bir sorgu dilidir. Apaçi Kovanı Yapılandırılmış verilerin işlenmesi ve analizi için kullanılır. Kullanıcıları MapReduce programlamasının karmaşıklığından kurtarır. Öğrenmeyi kolaylaştırmak için tablolar, satırlar, sütunlar ve şema gibi ilişkisel veritabanlarından ortak kavramları yeniden kullanır. Hive, Hive Sorgu Dili (HiveQL) kullanarak Hive sorgusu yazmak için bir komut satırı arayüzü (CLI) sağlar.
Çoğu etkileşim genellikle bir komut satırı arayüzü (CLI) üzerinden gerçekleşir. Genel olarak HiveQL sözdizimi şuna benzer: SQL Çoğu veri analistinin aşina olduğu bir sözdizimi. Orijinal Hive belgelerinde belirtilen dört dosya formatı TEXTFILE, SEQUENCEFILE, ORC ve RCFILE'dır (Kayıt Sütunlu Dosya); mevcut sürümler ayrıca Parquet ve Avro formatlarını da okuyup yazabilir ve çoğu ayarlama kılavuzu ORC formatını varsayar.
Hive, tek kullanıcılı meta veri depolaması için yerleşik bir Derby veritabanı kullanır. Çok kullanıcılı veya paylaşımlı meta veri deposu dağıtımları için Hive, farklı bir veritabanı kullanır. MySQL Ya da bunun yerine başka bir harici ilişkisel veritabanı kullanın, çünkü Derby aynı anda yalnızca bir oturuma izin veriyor.
HiveQL Yerleşik Operaları
Hive, Hive veri ambarında tutulan tablolara karşı çalıştırılan veri işlemleri için yerleşik operatörler sağlar.
Bu operatörler, bir ifade içindeki işlenenler üzerinde işlem yapar ve uygulanan mantığa göre bir değer döndürür; bu mantık bir karşılaştırma, bir hesaplama veya iç içe geçmiş bir sütunda arama olabilir.
Aşağıda HiveQL'deki başlıca yerleşik operatör türleri verilmiştir:
- İlişkisel operatörler
- Aritmetik operatörler
- mantıksal operatörler
- Operakarmaşık tipler üzerindeki torklar
- Karmaşık tip yapıcıları
Aşağıda her aile için ayrı bir bölüm ayrılmış olup, o aileye ait operatör tablosunun tamamı verilmiştir.
İlişkisel OperaHiveQL'deki tors
İki işlenen arasındaki ilişkileri karşılaştırmak için ilişkisel operatörler kullanıyoruz.
- OperaEşittir, eşit değildir, küçüktür ve büyüktür gibi ifadeler.
- Bu operatörlerdeki işlenen türlerinin tamamı temel veri türleridir ve desen eşleştirme operatörleri yalnızca dizeleri kabul eder.
Her ilişkisel operatör bir BOOLEAN değeri döndürür; bu nedenle WHERE yan tümcesi, JOIN koşulu ve CASE WHEN dalı bu operatörlerden oluşturulur. Aşağıdaki tablo, ilişkisel operatörler ve bunların HiveQL'deki kullanımları hakkında ayrıntılı bilgi vermektedir:
| Gömme Operator | Açıklama | Operand |
|---|---|---|
| X = Y | X ifadesi Y ifadesine eşdeğerse DOĞRU, aksi halde YANLIŞ. | Tüm ilkel türleri alır |
| X !=Y | X ifadesi Y ifadesine eşdeğer değilse DOĞRU, aksi halde YANLIŞ. | Tüm ilkel türleri alır |
| X < Y | X ifadesi Y ifadesinden küçükse DOĞRU, aksi halde YANLIŞ. | Tüm ilkel türleri alır |
| X <= Y | X ifadesi Y ifadesinden küçük veya ona eşitse DOĞRU. Aksi halde YANLIŞ. | Tüm ilkel türleri alır |
| X > Y | X ifadesi Y ifadesinden büyükse DOĞRU, aksi halde YANLIŞ. | Tüm ilkel türleri alır |
| X >= Y | X ifadesi Y ifadesinden büyük veya eşitse DOĞRU. Aksi halde YANLIŞ. | Tüm ilkel türleri alır |
| X BOŞTUR | X ifadesi NULL değerine eşitse TRUE, aksi halde FALSE. | Her türlü alır |
| X BOŞ DEĞİLDİR | X ifadesi NULL değerine eşitse FALSE, aksi halde TRUE. | Her türlü alır |
| X Y'Yİ GİBİ | X dize kalıbı Y ile eşleşirse DOĞRU, aksi halde YANLIŞ. | Yalnızca Dizeleri alır |
| X GİBİ Y | X veya Y NULL ise NULL, X'in herhangi bir alt dizisi eşleşiyorsa TRUE Java düzenli ifade Y, aksi halde FALSE. | Yalnızca Dizeleri alır |
| X REGEXP Y | RLIKE ile aynı. | Yalnızca Dizeleri alır |
Unutmayın ki, NULL ile yapılan bir karşılaştırma asla TRUE veya FALSE döndürmez. Bu nedenle tabloda IS NULL ve IS NOT NULL ayrı operatörler olarak listelenmiştir, X = NULL'un çalışması beklenmez.
HiveQL Aritmetiği Operaları
Aritmetik operatörleri, işlenenler üzerinde aritmetik işlemler gerçekleştirmek için kullanırız.
- Toplama, çıkarma gibi aritmetik işlemlertracİşlemler arasında çarpma ve bölme işlemleri bu operatörleri kullanır.
- Bu operatörlerdeki işlenen türlerinin tümü sayı türündedir.
Örnek:
2 + 3'ün sonucu 5'tir.
Bu örnekte, '+' operatör, 2 ve 3 işlenenler ve dönüş değeri 5'tir.
Aşağıdaki tabloda Hive Sorgu Dilindeki aritmetik operatörler hakkında ayrıntılı bilgi verilmektedir:
| Gömme Operator | Açıklama | Operand |
|---|---|---|
| X + Y | X ve Y değerini ekleme çıktısını döndürecektir. | Tüm sayı türlerini alır |
| X – Y | Bu, alt programın çıktısını döndürecektir.tracX değerinden Y değerini türetmek. | Tüm sayı türlerini alır |
| X * Y | X ve Y değerlerinin çarpılmasının çıktısını döndürecektir. | Tüm sayı türlerini alır |
| X/Y | Y'yi X'ten bölmenin çıktısını döndürecektir. | Tüm sayı türlerini alır |
| X %Y | X'in Y'ye bölünmesinden elde edilen kalanı döndürür. | Tüm sayı türlerini alır |
| X ve Y | X ve Y'nin bitsel VE işleminin çıktısını döndürecektir. | Tüm sayı türlerini alır |
| X | e | X ve Y'nin bitsel VEYA'sının çıktısını döndürecektir. | Tüm sayı türlerini alır |
| X ^ Y | X ve Y'nin bitsel XOR'unun çıktısını döndürecektir. | Tüm sayı türlerini alır |
| ~X | X'in bitsel DEĞİL'inin çıktısını döndürecektir. | Tüm sayı türlerini alır |
Son dört satır, sıradan aritmetik işlemler yerine bit tabanlı aritmetik işlemlerdir: tamsayı işlenenlerin ikili gösterimi üzerinde işlem yaparlar, bu nedenle &, | ve ^ operatörleri, bir sonraki bölümde ele alınan mantıksal VE, VEYA ve DEĞİL operatörleriyle aynı değildir.
HiveQL Mantıksal Operaları
Mantıksal operatörleri, işlenenler üzerinde mantıksal işlemler gerçekleştirmek için kullanırız.
- İşlenenler arasında AND, OR ve NOT gibi mantıksal işlemler bu operatörleri kullanır.
- Bu operatörlerdeki işlenen türlerinin tamamı BOOLEAN türündedir.
Aşağıdaki tabloda HiveQL'deki mantıksal operatörler hakkında ayrıntılı bilgi verilmektedir:
| Operaları | Açıklama | Operands |
|---|---|---|
| X VE Y | Hem X hem de Y DOĞRU ise DOĞRU, aksi takdirde YANLIŞ. | Yalnızca Boole türleri |
| X && Y | X ve Y ile aynı, ancak burada && sembolünü kullanıyoruz. | Yalnızca Boole türleri |
| X VEYA Y | X veya Y veya her ikisi de DOĞRU ise DOĞRU, aksi takdirde YANLIŞ. | Yalnızca Boole türleri |
| X || e | X veya Y ile aynı, ancak burada || sembolünü kullanıyoruz. | Yalnızca Boole türleri |
| X DEĞİL | X YANLIŞ ise DOĞRU, aksi halde YANLIŞ. | Yalnızca Boole türleri |
| !X | NOT X ile aynıdır, ancak burada ! sembolünü kullanıyoruz. | Yalnızca Boole türleri |
İlişkisel operatörler BOOLEAN değerler döndürdüğü için, mantıksal operatörler bunları bir araya getirir: salary > 50000 AND dept = 'Sales' gibi bir koşul, bir aileyi diğerine bağlar.
OperaKarmaşık Türler Üzerine Tors
İlişkisel, aritmetik ve mantıksal operatörlerin tümü tekil skalar değerler üzerinde çalışır. Hive ayrıca dizi, harita ve yapı sütunlarını da saklar ve bunların içindeki öğelere ulaşmak için farklı bir mekanizmaya ihtiyaç duyulur. Aşağıdaki tablo, bu mekanizmayı sağlayan karmaşık tip operatörleri hakkında ayrıntılı bilgi vermektedir:
| Operaları | Operands | Açıklama |
|---|---|---|
| Bir] | A bir Dizidir ve n bir tamsayı türüdür | Bu fonksiyon, A dizisindeki n. elemanı döndürür. İlk elemanın indeksi 0'dır. |
| M[anahtar] | M bir Haritadır ve anahtarın tipi K'dır | Haritadaki anahtara karşılık gelen değeri döndürecektir. |
Her iki biçim de sıradan ifadelerdir, bu nedenle bir SELECT listesinde, bir WHERE yan tümcesinde veya bir GROUP BY'da yer alabilirler ve bir yapı alanına köşeli parantez yerine S.field gibi nokta gösterimiyle ulaşılır.
Karmaşık Tip Oluşturucuları
Yukarıdaki operatörler mevcut bir karmaşık sütunu okurken, yapıcılar yeni bir sütun oluşturur. Aşağıdaki tablo, Hive'da Array, Map ve Struct gibi karmaşık veri türlerinin örneklerini oluşturan karmaşık tür yapıcıları hakkında ayrıntılı bilgi vermektedir.
Bu bölümde, karmaşık tip yapıcılar üzerinde gerçekleştirilen işlemleri inceleyeceğiz.
| Operaları | Operands | Açıklama |
|---|---|---|
| dizi | (val1, val2, …) | Bu, belirtilen val1, val2 gibi öğelerle bir dizi oluşturacaktır. |
| birlik oluştur | (etiket, val1, val2, …) | Bu, etiket parametresiyle referans verilen değere sahip bir birleşim türü oluşturacaktır. |
| harita | (anahtar1, değer1, anahtar2, değer2, …) | Verilen işlenenlerdeki anahtar/değer çiftleriyle bir harita oluşturacaktır. |
| adlandırılmış yapı | (isim1, değer1, isim2, değer2, …) | Verilen alan adları ve işlenenlerde belirtilen değerlerle bir yapı (Struc) oluşturacaktır. |
| yapı | (val1, val2, val3, …) | Verilen alan değerleriyle bir yapı (struct) oluşturur. Yapı alan adları col1, col2 vb. olacaktır. |
Yapıcılar (constructors) en sık olarak karmaşık bir sütunu dolduran bir INSERT işleminde veya sonucu başka bir tabloya yazmadan önce birden fazla skalar sütunu tek bir yapıya paketleyen bir SELECT işleminde kullanılır.
HiveQL Dahili Fonksiyonları
OperaTork fonksiyonları karşılaştırma, hesaplama ve eleman erişimini kapsar, ancak bir sayıyı yuvarlamaz, bir dizeyi kırpmaz veya alt dizileme yapmaz.tracİki tarih. Bu iş, operatörlerin göründüğü aynı ifadeler içinde adlarıyla çağrılan Hive'ın yerleşik fonksiyonlarına aittir. Aşağıdaki tablo, yeni başlayan birinin ilk karşılaştığı aileleri gruplandırmaktadır.
| Fonksiyon ailesi | Tipik üyeler | Ne için kullanılır? |
|---|---|---|
| Matematiksel | yuvarlama(), taban(), tavan(), mutlak değer(), kübik değer(), karekök(), rastgele sayım() | Tek bir sütun değerine yuvarlama, üs alma ve diğer sayısal hesaplamalar. |
| dizi | birleştirme(), alt liste(), üst sınır(), alt sınır(), kırpma(), uzunluk(), düzenli ifade değiştirme() | Temizleme, düzeltme ve yeniden şekillendirmeping Karşılaştırılmadan veya gruplandırılmadan önce metin. |
| Tarih | mevcut tarih, yıl(), ay(), tarih farkı(), tarih ekleme(), unix zaman damgası() | ExtracTarih parçalarını birleştirerek ve iki tarih arasındaki aralıkları ölçerek. |
| Şartlı | if(), CASE WHEN, coalesce(), nvl(), isnull() | Satır düzeyinde bir değer seçmek ve NULL değerini yedek bir değerle değiştirmek. |
| Koleksiyon | boyut(), harita_anahtarları(), harita_değerleri(), dizi_içerir(), diziyi_sırala() | Karmaşık tip operatörlerinin eriştiği dizi, harita ve yapı sütunlarını inceleme. |
| Tür dönüşümü | dönüştürme(), ikili() | Bir sütunu, operatörün beklediği türe zorlamak. |
| Toplam (UDAF) | sayma(), toplama(), ortalama(), minimum(), maksimum(), küme toplama() | Birden fazla satırı tek bir değere indirgeme, genellikle GROUP BY ile birlikte kullanılır. |
Fonksiyon listesi Hive sürümüne bağlıdır, bu nedenle statik bir sayfadan okumak yerine oturumun kendisinden okumak daha iyidir. Bunu yapmak için iki ifade kullanılır:
SHOW FUNCTIONS; DESCRIBE FUNCTION round; DESCRIBE FUNCTION EXTENDED round;
SHOW FUNCTIONS komutu kayıtlı her adı listeler, DESCRIBE FUNCTION komutu tek satırlık imzayı yazdırır ve EXTENDED formu, uygulayan sınıfın sağladığı durumlarda kullanım örnekleri ekler. Yerleşik bir fonksiyon uygun olmadığında, Hive bir alternatif kabul eder. kullanıcı tanımlı fonksiyon yazılmış Java.
HiveQL ve SQL: Temel Farklar
HiveQL, SQL sözdizimini bilinçli olarak ödünç alır ve yukarıdaki operatör tabloları, SQL yazmış olan herkese tanıdık gelecektir. Ancak altta yatan yürütme modeli aynı değildir ve farklılıklar, sorgu basit bir SELECT'in ötesine geçtiği anda ortaya çıkar.
| Davranış | HiveQL | Geleneksel SQL (RDBMS) |
|---|---|---|
| Şema işleme | Okuma sırasında şema uygulanıyor — dosya sorgulandığında şema uygulanıyor. | Yazma sırasında şema uygulanıyor — satır eklendiğinde şema zorunlu hale getiriliyor. |
| Satır düzeyinde GÜNCELLEME ve SİLME | Yalnızca ACID tablolarında desteklenir; yönetilen tablolar Hive 3.0'dan itibaren varsayılan olarak ACID'dir. | Varsayılan olarak her tabloda desteklenir. |
| Dizinler | Hive 3.0'da (HIVE-18448) indeks desteği kaldırıldı; bunun yerine ORC veya Parquet dosya düzeyinde indeksler ve somutlaştırılmış görünümler kullanıldı. | B-ağacı ve diğer ikincil indeksler temel bir özelliktir. |
| Yürütme ve gecikme | Tez, MapReduce veya diğer platformlarda toplu işlere derlenir. SparkDolayısıyla küçük sorgular bile işe başlama maliyetini beraberinde getirir. | Etkileşimli yürütme, genellikle milisaniyeler içinde gerçekleşir. |
| Tasarım hedefi | HDFS veya nesne depolama alanındaki çok büyük dosyalar üzerinde veri aktarım hızı | Tek bir sunucuda veya kümede düşük gecikmeli okuma ve yazma işlemleri |
İfade yazımı açısından pratik sonuçları küçük ama gerçektir. OperaTor operatörleri beklendiği gibi davranır, ancak ilişkisel bir veritabanında bir indeksten yanıtlanacak bir koşul, Hive'da dosyaları tarayarak yanıtlanır; bu nedenle, bölüm sütununda filtreleme yapmak genellikle operatörün kendisini ayarlamaktan çok daha değerlidir.

