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.

  • 🧮 Beş operatör ailesi: İlişkisel, aritmetik, mantıksal, karmaşık tip ve yapıcı operatörler, bir HiveQL sorgusunun ihtiyaç duyduğu her ifadeyi kapsar.
  • 🔍 Karşılaştırma, herhangi bir temel öğeyi alabilir: İlişkisel operatörler tüm temel veri tiplerini kabul ederken, LIKE, RLIKE ve REGEXP yalnızca dizeler üzerinde çalışır.
  • Aritmetik, bit düzeyinde işlemleri içerir: Dört temel işlemin ötesinde, HiveQL sayı türleri üzerinde modül ve bit düzeyinde AND, OR, XOR ve NOT işlemlerini sunar.
  • 🧩 İç içe geçmiş verilerin kendine özgü bir sözdizimi vardır: A[n] bir dizi öğesine, M[key] ise bir harita değerine ulaşır; her ikisi de ifade kullanımına izin verilen her yerde kullanılabilir.
  • 🏗️ Yapıcılar karmaşık değerler oluşturur: array(), map(), struct(), named_struct() ve create_union() fonksiyonları, bir sorgu içindeki karmaşık sütunları bir araya getirir.
  • 📚 Fonksiyonlar operatörleri genişletir: Matematiksel, dize, tarih, koşullu, koleksiyon ve toplama fonksiyonları, hiçbir operatörün kapsamadığı işleri halleder.

Hive Sorgu Dili (HiveQL) operatörleri nelerdir?

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.

SSS

Anahtar kelimeler, AND veya LIKE gibi operatör sözcükleri ve fonksiyon adları büyük/küçük harf duyarlılığı olmadan çözümlenir, bu nedenle SELECT ve select aynı şekilde davranır. Dize verileri ise böyle değildir: 'Sales' ile 'sales' karşılaştırması, upper() veya lower() önceden uygulanmadığı sürece FALSE döndürür.

X / Y işlemi, her iki işlenen de tamsayı olsa bile her zaman DOUBLE değeri döndürür; bu nedenle 7 / 2 işlemi 3 yerine 3.5 verir. Tamsayı bölme işlemi için DIV anahtar kelimesini, kalan için ise % operatörünü kullanın.

Aritmetik ve karşılaştırma operatörleri NULL değerini yayar: NULL içeren herhangi bir ifade FALSE değil, NULL olarak değerlendirilir. IS NULL veya IS NOT NULL ile test edin ve değer bir operatöre ulaşmadan önce coalesce() veya nvl() ile bir yedek çözüm kullanın.

LIKE, SQL joker karakterlerini kullanır; burada % herhangi bir karakter dizisini, _ ise tek bir karakter dizisini eşleştirir. RLIKE ise şunu eşleştirir: Java Değerin herhangi bir alt dizesine karşı normal ifade. REGEXP, RLIKE'ın eş anlamlısıdır ve aynı şekilde davranır.

Önce aritmetik operatörler, sonra karşılaştırma operatörleri, sonra DEĞİL, sonra VE, sonra VEYA bağlanır. Uzun önermelerde sıralamanın yanlış anlaşılması kolay olduğundan, VE ve VEYA aynı maddede göründüğünde parantez kullanılması önerilir.

Evet. İlişkisel ve mantıksal operatörler birleştirme koşulları oluşturur, aritmetik operatörler ise gruplama işlemleri üretebilir.ping Anahtarlar ve M[key] gibi karmaşık tipli erişim, SELECT listeleri, WHERE yan tümceleri ve ORDER BY dahil olmak üzere bir ifadenin izin verildiği her yerde geçerlidir.

Makine öğrenimi yardımcıları, düz dil filtresini aday bir yükleme dönüştürür ve bir dize sütununu bir sayıyla karşılaştırmak gibi tür uyuşmazlıklarını işaretler. Oluşturulan operatörü her zaman yukarıdaki tablolara göre doğrulayın, çünkü Hive, Spark SQL ve Presto.

Sık kullanılan önermeleri iyi bir şekilde ele alıyor ve kısa bir yorumdan coalesce() veya CASE WHEN kalıplarını öneriyor. Ayrıca diğer motorlardan gelen sözdizimini de karıştırıyor, bu nedenle sorguyu çalıştırmadan önce bit düzeyinde operatörleri, karmaşık tip erişimini ve herhangi bir fonksiyon adını DESCRIBE FUNCTION ile doğrulayın.

Bu yazıyı şu şekilde özetleyin: