Azure HDInsight'ta Apache Hive ve HiveQL nedir?

Apache Hive , Apache Hadoop için bir veri ambarı sistemidir. Hive, verilerin özetlenmesine, sorgulanmasını ve analizine olanak tanır. Hive sorguları, SQL'e benzer bir sorgu dili olan HiveQL'de yazılır.

Hive, yapıyı büyük ölçüde yapılandırılmamış veriler üzerinde yansıtmanıza olanak tanır. Yapıyı tanımladıktan sonra HiveQL kullanarak Java veya MapReduce bilgisi olmadan verileri sorgulayabilirsiniz.

HDInsight, belirli iş yükleri için ayarlanmış çeşitli küme türleri sağlar. Aşağıdaki küme türleri genellikle Hive sorguları için kullanılır:

Küme türü Açıklama
Interactive Query Etkileşimli sorgular için yanıt sürelerini iyileştirmeye yönelik Düşük Gecikme Süreli Analitik İşleme (LLAP) işlevselliği sağlayan hadoop kümesi. Daha fazla bilgi için HDInsight'ta Etkileşimli Sorgu ile Başlama belgesine bakın.
Hadoop Toplu işleme iş yükleri için ayarlanmış bir Hadoop kümesi. Daha fazla bilgi için HDInsight'ta Apache Hadoop ile başlama belgesine bakın.
Spark Apache Spark, Hive ile çalışmaya yönelik yerleşik işlevlere sahiptir. Daha fazla bilgi için HDInsight üzerinde Apache Spark ile başlama belgesine bakın.
HBase HiveQL, Apache HBase'de depolanan verileri sorgulamak için kullanılabilir. Daha fazla bilgi için HDInsight üzerinde Apache HBase ile başlama belgesine bakın.

Hive'ı kullanma

HDInsight ile Hive kullanmanın farklı yollarını keşfetmek için aşağıdaki tabloyu kullanın:

İsterseniz bu yöntemi kullanın... ...etkileşimli sorgular ...toplu işlem ... bu istemci işletim sisteminden
Visual Studio Code için HDInsight araçları Linux, Unix, macOS X veya Windows
Visual Studio için HDInsight araçları Windows
Hive Görünümü Herhangi biri (tarayıcı tabanlı)
Beeline istemcisi Linux, Unix, macOS X veya Windows
REST API   Linux, Unix, macOS X veya Windows
Windows PowerShell   Windows

HiveQL dil başvurusu

HiveQL dil başvurusu, dil kılavuzunda kullanılabilir.

Hive ve veri yapısı

Hive, yapılandırılmış ve yarı yapılandırılmış verilerle nasıl çalışıldığını anlar. Örneğin, alanların belirli karakterlerle sınırlandırıldığı metin dosyaları. Aşağıdaki HiveQL deyimi, boşlukla ayrılmış veriler üzerinde bir tablo oluşturur:

CREATE EXTERNAL TABLE log4jLogs (
    t1 string,
    t2 string,
    t3 string,
    t4 string,
    t5 string,
    t6 string,
    t7 string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ' '
STORED AS TEXTFILE LOCATION '/example/data/';

Hive ayrıca karmaşık veya düzensiz yapılandırılmış veriler için özel seri hale getirici/seri durumdan çıkarıcıları (SerDe) destekler. Daha fazla bilgi için HDInsight ile özel JSON SerDe kullanma belgesine bakın.

Hive tarafından desteklenen dosya biçimleri hakkında daha fazla bilgi için Dil kılavuzuna (https://cwiki.apache.org/confluence/display/Hive/LanguageManual)

Hive iç tabloları ile dış tablolar karşılaştırması

Hive ile oluşturabileceğiniz iki tür tablo vardır:

  • İç: Veriler Hive veri ambarında depolanır. Veri ambarı, küme için varsayılan depolamada bulunur /hive/warehouse/ .

    Aşağıdaki koşullardan biri geçerli olduğunda iç tabloları kullanın:

    • Veriler geçicidir.
    • Hive'ın tablo ve verilerin yaşam döngüsünü yönetmesini istiyorsunuz.
  • Dış: Veriler veri ambarı dışında depolanır. Veriler küme tarafından erişilebilen herhangi bir depolamada depolanabilir.

    Aşağıdaki koşullardan biri geçerli olduğunda dış tabloları kullanın:

    • Veriler Hive dışında da kullanılır. Örneğin, veri dosyaları başka bir işlem tarafından güncelleştirilir (dosyaları kilitlemez.)
    • Tablo bırakıldıktan sonra bile verilerin temel alınan konumda kalması gerekir.
    • Varsayılan olmayan depolama hesabı gibi özel bir konuma ihtiyacınız vardır.
    • Hive dışındaki bir program veri biçimini, konumunu vb. yönetir.

Daha fazla bilgi için Hive İç ve Dış Tablolar Giriş blog gönderisine bakın.

Kullanıcı tanımlı işlevler (UDF)

Hive, kullanıcı tanımlı işlevler (UDF) aracılığıyla da genişletilebilir. UDF, HiveQL'de kolayca modellenmeyecek işlevler veya mantık uygulamanıza olanak tanır. Hive ile UDF kullanma örneği için aşağıdaki belgelere bakın:

Örnek veriler

HDInsight üzerinde Hive, adlı hivesampletablebir iç tabloyla önceden yüklenmiş olarak gelir. HDInsight, Hive ile kullanılabilecek örnek veri kümeleri de sağlar. Bu veri kümeleri ve /HdiSamples dizinlerinde /example/data depolanır. Bu dizinler kümenizin varsayılan depolama alanında bulunur.

Örnek Hive sorgusu

Aşağıdaki HiveQL deyimleri, sütunları dosyaya yansıtıyor /example/data/sample.log :

DROP TABLE log4jLogs;
CREATE EXTERNAL TABLE log4jLogs (
    t1 string,
    t2 string,
    t3 string,
    t4 string,
    t5 string,
    t6 string,
    t7 string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ' '
STORED AS TEXTFILE LOCATION '/example/data/';
SELECT t4 AS sev, COUNT(*) AS count FROM log4jLogs
    WHERE t4 = '[ERROR]' AND INPUT__FILE__NAME LIKE '%.log'
    GROUP BY t4;

Önceki örnekte HiveQL deyimleri aşağıdaki eylemleri gerçekleştirir:

Deyim Açıklama
DROP TABLE Tablo zaten varsa silin.
DıŞ TABLO OLUŞTURMA Hive'da yeni bir dış tablo oluşturur. Dış tablolar tablo tanımını yalnızca Hive'da depolar. Veriler özgün konumda ve özgün biçimde bırakılır.
SATıR BIÇIMI Hive'a verilerin nasıl biçimlendirildiğini bildirir. Bu durumda, her günlükteki alanlar bir boşlukla ayrılır.
TEXTFILE KONUMU OLARAK DEPOLANıR Hive'a verilerin nerede depolandığını ( example/data dizin) ve metin olarak depolandığını bildirir. Veriler tek bir dosyada olabilir veya dizindeki birden çok dosyaya yayılabilir.
SELECT t4 sütununun [ERROR] değerini içerdiği tüm satırların sayısını seçer. Bu değeri içeren üç satır olduğundan bu deyim 3 değerini döndürür.
INPUT__FILE__NAME LIKE '%.log' Hive, şemayı dizindeki tüm dosyalara uygulamayı dener. Bu durumda, dizin şemayla eşleşmeyen dosyalar içerir. Sonuçlarda çöp verilerini önlemek için bu deyim Hive'a yalnızca .log ile biten dosyalardan veri döndürmemiz gerektiğini bildirir.

Dekont

Dış tablolar, temel alınan verilerin bir dış kaynak tarafından güncelleştirilmesini beklerken kullanılmalıdır. Örneğin, otomatik veri yükleme işlemi veya MapReduce işlemi.

Dış tablo bırakılıyorsa veriler silinmez, yalnızca tablo tanımı silinir.

Dış tablo yerine iç tablo oluşturmak için aşağıdaki HiveQL'i kullanın:

CREATE TABLE IF NOT EXISTS errorLogs (
    t1 string,
    t2 string,
    t3 string,
    t4 string,
    t5 string,
    t6 string,
    t7 string)
STORED AS ORC;
INSERT OVERWRITE TABLE errorLogs
SELECT t1, t2, t3, t4, t5, t6, t7 
    FROM log4jLogs WHERE t4 = '[ERROR]';

Bu deyimler aşağıdaki eylemleri gerçekleştirir:

Deyim Açıklama
YOKSA TABLO OLUŞTUR Tablo yoksa oluşturun. EXTERNAL anahtar sözcüğü kullanılmadığından, bu deyim bir iç tablo oluşturur. Tablo Hive veri ambarında depolanır ve tamamen Hive tarafından yönetilir.
ORC OLARAK DEPOLANIYOR Verileri İyileştirilmiş Satır Sütunu (ORC) biçiminde depolar. ORC, Hive verilerini depolamak için yüksek oranda iyileştirilmiş ve verimli bir biçimdir.
ÜZERINE YAZ EKLE ... SEÇİN Tablodan log4jLogs [ERROR] içeren satırları seçer ve ardından verileri errorLogs tablosuna ekler.

Dekont

Dış tablolardan farklı olarak, iç tablo bırakılıyorsa temel alınan veriler de silinir.

Hive sorgu performansını geliştirme

Apache Tez

Apache Tez , Hive gibi yoğun veri kullanan uygulamaların büyük ölçekte çok daha verimli çalışmasını sağlayan bir çerçevedir. Tez varsayılan olarak etkindir. Tez tasarım belgelerinde Apache Hive, uygulama seçenekleri ve ayarlama yapılandırmaları hakkında ayrıntılar içerir.

Düşük GecikmeLi Analitik İşleme (LLAP)

LLAP (bazen Canlı Uzun ve İşlem olarak da bilinir), Hive 2.0'da sorguların bellek içi önbelleğe alınmasını sağlayan yeni bir özelliktir.

HDInsight, Etkileşimli Sorgu küme türünde LLAP sağlar. Daha fazla bilgi için Etkileşimli Sorgu ile Başla belgesine bakın.

Hive sorgularını zamanlama

Hive sorgularını zamanlanmış veya isteğe bağlı bir iş akışının parçası olarak çalıştırmak için kullanılabilecek birkaç hizmet vardır.

Azure Data Factory

Azure Data Factory, HDInsight'ı Data Factory işlem hattının bir parçası olarak kullanmanıza olanak tanır. İşlem hattından Hive kullanma hakkında daha fazla bilgi için Azure Data Factory'de Hive etkinliğini kullanarak verileri dönüştürme belgesine bakın.

Hive işleri ve SQL Server Integration Services

Bir Hive işini çalıştırmak için SQL Server Integration Services 'ı (SSIS) kullanabilirsiniz. SSIS için Azure Özellik Paketi, HDInsight üzerinde Hive işleriyle çalışan aşağıdaki bileşenleri sağlar.

Daha fazla bilgi için Bkz . Azure Özellik Paketi belgeleri.

Apache Oozie

Apache Oozie, Hadoop işlerini yöneten bir iş akışı ve koordinasyon sistemidir. Oozie'yi Hive ile kullanma hakkında daha fazla bilgi için apache Oozie kullanarak bir iş akışı tanımlama ve çalıştırma belgesine bakın.

Dekont

Hive için Phoenix Depolama İşleyicisi HDInsight'ta desteklenmiyor

Sonraki adımlar

Hive'ın ne olduğunu ve HDInsight'ta Hadoop ile nasıl kullanılacağını öğrendiğinize göre, Azure HDInsight ile çalışmanın diğer yollarını keşfetmek için aşağıdaki bağlantıları kullanın.