Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, bir SSH bağlantısı üzerinden Apache Hive sorguları oluşturmak ve yürütmek için Komut satırı Apache Beeline istemcisinin nasıl kullanılacağı açıklanmaktadır.
Arka plan
Beeline, HDInsight kümenizin baş düğümlerine dahil edilen bir Hive istemcisidir. Bu makalede, hive sorgusu ve HiveQL dosyası kullanarak örnekler aracılığıyla bu aracın nasıl kullanılacağı açıklanmaktadır.
HDInsight kümenizde yüklü Beeline istemcisine bağlanmak veya Beeline'ı yerel olarak yüklemek için Apache Beeline ile bağlantı kurmak veya yüklemek için kılavuzumuzu izleyin.
Beeline, HDInsight kümenizde barındırılan HiveServer2 hizmetine bağlanmak için JDBC kullanır. Beeline kullanarak HDInsight'ta Hive'a İnternet üzerinden uzaktan erişebilirsiniz. Aşağıdaki örnekler Beeline'dan HDInsight'a bağlanmak için kullanılan en yaygın bağlantı dizelerini sağlar.
Örnekler için önkoşullar
Azure HDInsight üzerinde hadoop kümesi. Bir kümeye ihtiyacınız varsa HDInsight kümesi oluşturmak için kılavuzumuzu izleyin.
Kümenizin birincil depolama alanı için URI şemasına dikkat edin. Örneğin,
wasb://
Azure Depolama,abfs://
Azure Data Lake Depolama 2. Nesil veyaadl://
Azure Data Lake Depolama 1. Nesil için. Azure Depolama için güvenli aktarım etkinleştirildiyse, URI olurwasbs://
. Daha fazla bilgi için bkz. güvenli aktarım.Bir SSH istemcisi. Daha fazla bilgi için bkz. SSH kullanarak HDInsight'a (Apache Hadoop) bağlanma. Bu belgedeki adımların çoğunda Beeline'ı bir SSH oturumundan kümeye kullandığınız varsayılır. Yerel bir Beeline istemcisi de kullanabilirsiniz, ancak bu adımlar bu makalede ele alınmamıştır.
Hive sorgusu çalıştırma
Bu örnek, SSH bağlantısından Beeline istemcisini kullanmayı temel alır.
Aşağıdaki kodla kümeye bir SSH bağlantısı açın. Kümenizin SSH kullanıcısı ile
sshuser
değerini ve kümenizin adıylaCLUSTERNAME
değerini değiştirin. İstendiğinde, SSH kullanıcı hesabının parolasını girin.ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
Aşağıdaki komutu girerek açık SSH oturumunuzdan Beeline istemcinizle HiveServer2'ye bağlanın:
beeline -u 'jdbc:hive2://headnodehost:10001/;transportMode=http'
Uyarı
Beeline kullanarak HiveServer2'ye bağlanma veya Kurumsal Güvenlik Paketi (ESP) özellikli bir küme kullanıyorsanız yerel kümenizden bağlanmak için Beeline'ı yerel olarak yükleme bölümündeki "Kerberos kullanarak HDInsight Kurumsal Güvenlik Paketi (ESP) kümesine" bölümüne bakın
Beeline komutları bir
!
karakterle başlar, örneğin!help
yardım görüntüler. Ancak bazı komutlar için!
atlanabilir. Örneğin,help
aynı zamanda çalışır.!sql
HiveQL deyimlerini yürütmek için kullanılan vardır. Ancak HiveQL o kadar yaygın olarak kullanılır ki, önceki!sql
değerini atlayabilirsiniz. Aşağıdaki iki deyim eşdeğerdir:!sql show tables; show tables;
Yeni kümede yalnızca bir tablo listelenir: hivesampletable.
Hivesampletable şemasını görüntülemek için aşağıdaki komutu kullanın:
describe hivesampletable;
Bu komut aşağıdaki bilgileri döndürür:
+-----------------------+------------+----------+--+ | col_name | data_type | comment | +-----------------------+------------+----------+--+ | clientid | string | | | querytime | string | | | market | string | | | deviceplatform | string | | | devicemake | string | | | devicemodel | string | | | state | string | | | country | string | | | querydwelltime | double | | | sessionid | bigint | | | sessionpagevieworder | bigint | | +-----------------------+------------+----------+--+
Bu bilgiler tablodaki sütunları açıklar.
HDInsight kümesiyle sağlanan örnek verileri kullanarak log4jLogs adlı bir tablo oluşturmak için aşağıdaki deyimleri girin: (URI şemanıza göre gerektiği gibi düzeltin.)
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 'wasbs:///example/data/'; SELECT t4 AS sev, COUNT(*) AS count FROM log4jLogs WHERE t4 = '[ERROR]' AND INPUT__FILE__NAME LIKE '%.log' GROUP BY t4;
Bu ifadeler aşağıdaki işlemleri gerçekleştirir:
Açıklama Açıklama TABLOYU SİL Tablo varsa silinir. Harici Tablo Oluştur Hive'da bir dış tablo oluşturur. Dış tablolar tablo tanımını yalnızca Hive'da depolar. Veriler özgün konumda bırakılır. SATıR BIÇIMI Verilerin nasıl biçimlendirildiğini. Bu durumda, her günlükteki alanlar bir boşlukla ayrılır. TEXT DOSYASI KONUMU OLARAK DEPOLANıR Verilerin nerede ve hangi dosya biçiminde depolandığı. SEÇ 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 sorgu 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ürmesi gerektiğini söyler. Uyarı
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ış bir tablo bırakıldığında veriler silinmez, sadece tablo tanımı silinir.
Bu komutun çıktısı aşağıdaki metne benzer:
INFO : Tez session hasn't been created yet. Opening session INFO : INFO : Status: Running (Executing on YARN cluster with App id application_1443698635933_0001) INFO : Map 1: -/- Reducer 2: 0/1 INFO : Map 1: 0/1 Reducer 2: 0/1 INFO : Map 1: 0/1 Reducer 2: 0/1 INFO : Map 1: 0/1 Reducer 2: 0/1 INFO : Map 1: 0/1 Reducer 2: 0/1 INFO : Map 1: 0(+1)/1 Reducer 2: 0/1 INFO : Map 1: 0(+1)/1 Reducer 2: 0/1 INFO : Map 1: 1/1 Reducer 2: 0/1 INFO : Map 1: 1/1 Reducer 2: 0(+1)/1 INFO : Map 1: 1/1 Reducer 2: 1/1 +----------+--------+--+ | sev | count | +----------+--------+--+ | [ERROR] | 3 | +----------+--------+--+ 1 row selected (47.351 seconds)
Beeline'dan çık:
!exit
HiveQL dosyası çalıştırma
Bu örnek, önceki örnekten bir devamdır. Aşağıdaki adımları kullanarak bir dosya oluşturun ve beeline kullanarak çalıştırın.
query.hql adlı bir dosya oluşturmak için aşağıdaki komutu kullanın:
nano query.hql
Dosyanın içeriği olarak aşağıdaki metni kullanın. Bu sorgu errorLogs adlı yeni bir 'internal' tablosu oluşturur:
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]' AND INPUT__FILE__NAME LIKE '%.log';
Bu ifadeler aşağıdaki işlemleri gerçekleştirir:
Açıklama Açıklama "EĞER YOKSA TABLO OLUŞTUR" Tablo henüz yoksa oluşturulur. EXTERNAL anahtar sözcüğü kullanılmadığından, bu deyim bir iç tablo oluşturur. İç tablolar 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 biçimi, Hive verilerini depolamak için son derece iyileştirilmiş ve verimli bir biçimdir. EKLE ÜZERİNE YAZ ... SEÇ log4jLogs tablosundan [ERROR] içeren satırları seçer ve ardından verileri errorLogs tablosuna ekler. Uyarı
Dış tablolardan farklı olarak, bir iç tablo bırakmak, temel alınan verileri de siler.
Dosyayı kaydetmek için Ctrl+X tuşunu kullanın, ardından Y yazın ve son olarak Enter tuşuna basın.
Beeline kullanarak dosyayı çalıştırmak için aşağıdakileri kullanın:
beeline -u 'jdbc:hive2://headnodehost:10001/;transportMode=http' -i query.hql
Uyarı
-i
parametresi Beeline'ı başlatır ve dosyasındakiquery.hql
deyimleri çalıştırır. Sorgu tamamlandıktan sonrajdbc:hive2://headnodehost:10001/>
istemine ulaşırsınız.-f
parametresini kullanarak, sorgu tamamlandıktan sonra Beeline'dan çıkan bir dosya da çalıştırabilirsiniz.errorLogs tablosunun oluşturulduğunu doğrulamak için aşağıdaki deyimi kullanarak errorLogs içindeki tüm satırları döndürin:
SELECT * from errorLogs;
T4 sütununda [ERROR] içeren üç veri satırı döndürülmelidir:
+---------------+---------------+---------------+---------------+---------------+---------------+---------------+--+ | errorlogs.t1 | errorlogs.t2 | errorlogs.t3 | errorlogs.t4 | errorlogs.t5 | errorlogs.t6 | errorlogs.t7 | +---------------+---------------+---------------+---------------+---------------+---------------+---------------+--+ | 2012-02-03 | 18:35:34 | SampleClass0 | [ERROR] | incorrect | id | | | 2012-02-03 | 18:55:54 | SampleClass1 | [ERROR] | incorrect | id | | | 2012-02-03 | 19:25:27 | SampleClass4 | [ERROR] | incorrect | id | | +---------------+---------------+---------------+---------------+---------------+---------------+---------------+--+ 3 rows selected (0.813 seconds)
Sonraki adımlar
HDInsight'ta Hive hakkında daha fazla genel bilgi için bkz . HDInsight üzerinde Apache Hadoop ile Apache Hive kullanma
HiveQL dil başvurularını dil kılavuzunda bulabilirsiniz
HDInsight üzerinde Hadoop ile çalışmanın diğer yolları hakkında daha fazla bilgi için bkz. HDInsight üzerinde Apache Hadoop ile MapReduce kullanma