HDInsight’ta JDBC sürücüsü üzerinden Apache Hive’ı sorgulama
Bir Java uygulamasından JDBC sürücüsünü nasıl kullanacağınızı öğrenin. Azure HDInsight 'ta Apache Hadoop Apache Hive sorguları göndermek için. bu belgedeki bilgiler, programlama yoluyla ve squırrel SQL istemcisinden nasıl bağlanabileceğinizi gösterir.
Hive JDBC arabirimi hakkında daha fazla bilgi için bkz. HiveJDBCInterface.
Önkoşullar
- Hadoop kümesi An HDInsight. Bir tane oluşturmak için bkz. Azure HDInsight kullanmaya başlama. Service HiveServer2 'ın çalıştığından emin olun.
- Java geliştirici seti (JDK) sürüm 11 veya üstü.
- Squirrel SQL. SQUIRREL bir JDBC istemci uygulamasıdır.
JDBC bağlantı dizesi
Azure 'da bir HDInsight kümesine JDBC bağlantıları 443 numaralı bağlantı noktası üzerinden yapılır. Trafik, TLS/SSL kullanılarak güvenli hale getirilir. Kümelerin arkasındaki genel ağ geçidi, trafiği HiveServer2 'in gerçekten dinlediği bağlantı noktasına yönlendirir. Aşağıdaki bağlantı dizesi HDInsight için kullanılacak biçimi gösterir:
jdbc:hive2://CLUSTERNAME.azurehdinsight.net:443/default;transportMode=http;ssl=true;httpPath=/hive2
CLUSTERNAME değerini HDInsight kümenizin adıyla değiştirin.
Ya da bağlantıyı, ambarı Kullanıcı arabirimi > Hive > configs > gelişmiş' i aracılığıyla bulabilirsiniz.
Bağlantı dizesinde konak adı
Bağlantı dizesindeki ' CLUSTERNAME.azurehdinsight.net ' konak adı, küme URL 'niz ile aynı. Azure portal aracılığıyla edinebilirsiniz.
Bağlantı dizesinde bağlantı noktası
Kümeye yalnızca Azure sanal ağı dışındaki bazı yerlerden bağlanmak için 443 numaralı bağlantı noktasını kullanabilirsiniz. HDInsight Yönetilen bir hizmettir. Bu, kümeye yapılan tüm bağlantıların güvenli bir ağ geçidi üzerinden yönetildiği anlamına gelir. 10001 veya 10000 bağlantı noktalarında doğrudan HiveServer 2 ' ye bağlanamazsınız. Bu bağlantı noktaları dışarıdan gösterilmez.
Kimlik Doğrulaması
Bağlantıyı kurarken, kimlik doğrulamak için HDInsight kümesi yönetici adını ve parolasını kullanın. squırrel SQL gibi JDBC istemcilerinden, istemci ayarlarında yönetici adı ve parola girin.
Bir Java uygulamasından bağlantı kurarken adı ve parolayı kullanmanız gerekir. Örneğin, aşağıdaki Java kodu yeni bir bağlantı açar:
DriverManager.getConnection(connectionString,clusterAdmin,clusterPassword);
squırrel SQL istemcisiyle Bağlan
SQUIRREL SQL, HDInsight kümeniz ile Hive sorgularını uzaktan çalıştırmak için kullanılabilen bir JDBC istemcidir. Aşağıdaki adımlarda, SQUIRREL SQL zaten yüklemiş olduğunuz varsayılır.
Kümeinizden kopyalanacak belirli dosyaları içerecek bir dizin oluşturun.
Aşağıdaki betikte, ' ın
sshuserküme IÇIN SSH kullanıcı hesabı adıyla değiştirin.CLUSTERNAMEHDInsight kümesi adıyla değiştirin. Bir komut satırından, çalışma dizininizi önceki adımda oluşturulan bir şekilde değiştirin ve ardından bir HDInsight kümesinden dosya kopyalamak için aşağıdaki komutu girin:scp sshuser@CLUSTERNAME-ssh.azurehdinsight.net:/usr/hdp/current/hadoop-client/{hadoop-auth.jar,hadoop-common.jar,lib/log4j-*.jar,lib/slf4j-*.jar,lib/curator-*.jar} . scp sshuser@CLUSTERNAME-ssh.azurehdinsight.net:/usr/hdp/current/hive-client/lib/{commons-codec*.jar,commons-logging-*.jar,hive-*-*.jar,httpclient-*.jar,httpcore-*.jar,libfb*.jar,libthrift-*.jar} .squırrel SQL uygulamasını başlatın. Pencerenin sol tarafında, sürücüler' i seçin.
Sürücüler iletişim kutusunun üst kısmındaki simgelerden + bir sürücü oluşturmak için simgeyi seçin.
Sürücü Ekle iletişim kutusunda aşağıdaki bilgileri ekleyin:
Özellik Değer Ad Hive Örnek URL jdbc:hive2://localhost:443/default;transportMode=http;ssl=true;httpPath=/hive2Ek sınıf yolu Daha önce indirilen tüm jar dosyalarını eklemek için Ekle düğmesini kullanın. Sınıf Adı org. Apache. Hive. JDBC. HiveDriver
Bu ayarları kaydetmek için Tamam ' ı seçin.
squırrel SQL penceresinin sol tarafında diğer adlar' ı seçin. Ardından + bir bağlantı diğer adı oluşturmak için simgeyi seçin.
Diğer ad Ekle iletişim kutusu için aşağıdaki değerleri kullanın:
Özellik Değer Ad HDInsight üzerinde Hive Sürücü Hive sürücüsünü seçmek için açılan eklentiyi kullanın. URL jdbc:hive2://CLUSTERNAME.azurehdinsight.net:443/default;transportMode=http;ssl=true;httpPath=/hive2. CLUSTERNAME değerini HDInsight kümenizin adıyla değiştirin.User Name HDInsight kümeniz için küme oturum açma hesabı adı. Yönetici varsayılandır. Parola Küme oturum açma hesabının parolası.
Önemli
Bağlantının çalıştığını doğrulamak için Test düğmesini kullanın. Bağlan: hdınsight 'ta Hive iletişim kutusu göründüğünde, testi gerçekleştirmek için Bağlan öğesini seçin. Sınama başarılı olursa başarılı bir bağlantı iletişim kutusu görürsünüz. Bir hata oluşursa bkz. sorun giderme.
Bağlantı diğer adını kaydetmek için diğer ad Ekle iletişim kutusunun altındaki Tamam düğmesini kullanın.
squırrel SQL en üstündeki Bağlan aşağı açılan listeden hdınsight 'ta Hive öğesini seçin. istendiğinde Bağlan' yi seçin.
bağlandıktan sonra, SQL sorgu iletişim kutusuna aşağıdaki sorguyu girin ve sonra çalıştır simgesini (çalışan bir kişi) seçin. Sonuçlar alanında sorgunun sonuçları gösterilmelidir.
select * from hivesampletable limit 10;
örnek Java uygulamasından Bağlan
HDInsight 'ta Hive sorgulamak için Java istemcisi kullanmanın bir örneği, adresinde bulunabilir https://github.com/Azure-Samples/hdinsight-java-hive-jdbc . Örneği derlemek ve çalıştırmak için depodaki yönergeleri izleyin.
Sorun giderme
SQL bağlantısı açılmaya çalışılırken beklenmeyen bir hata oluştu
Belirtiler: 3,3 veya üzeri bir HDInsight kümesine bağlanırken beklenmeyen bir hata oluştuğunu belirten bir hata alabilirsiniz. Bu hata için yığın izlemesi aşağıdaki satırlarla başlar:
java.util.concurrent.ExecutionException: java.lang.RuntimeException: java.lang.NoSuchMethodError: org.apache.commons.codec.binary.Base64.<init>(I)V
at java.util.concurrent.FutureTas...(FutureTask.java:122)
at java.util.concurrent.FutureTask.get(FutureTask.java:206)
Neden: Bu hata, SQUIRREL 'e dahil edilen eski bir Commons-codec. jar dosyası nedeniyle oluşur.
Çözüm: Bu hatayı çözmek için aşağıdaki adımları kullanın:
SQUIRREL programından çıkın ve sonra da bilgisayarınızda SQUIRREL 'in yüklü olduğu dizine gidin
C:\Program Files\squirrel-sql-4.0.0\lib. SQUIRREL dizininde, dizin altında,libvar olan Commons-codec. jar dosyasını HDInsight kümesinden indirilen ile değiştirin.SQuirreL'i yeniden başlatın. HdInsight üzerinde Hive'a bağlanırken artık hata oluşmaz.
HDInsight bağlantısı kesildi
Belirtiler: JDBC/ODBC aracılığıyla çok büyük miktarda veri (örneğin birkaç GB) indirmeye çalışırken, indirme sırasında HDInsight bağlantısı beklenmedik bir şekilde kesiliyor.
Neden: Bu hata, Ağ geçidi düğümlerinde oluşan sınırlamadan kaynaklandır. JDBC/ODBC'den veri almak için tüm verilerin Ağ Geçidi düğümünden geçmesi gerekir. Ancak ağ geçidi çok fazla miktarda veri indiren bir ağ geçidi tasarlanmaysa da ağ geçidi trafiği işleyene kadar bağlantıyı kapatıyor olabilir.
Çözüm: Çok miktarda veri indirmek için JDBC/ODBC sürücüsü kullanmaktan kaçının. Bunun yerine verileri doğrudan blob depolamadan kopyalayın.
Sonraki adımlar
Hive ile çalışmak için JDBC'yi kullanmayı öğrendiğinize göre, aşağıdaki bağlantıları kullanarak bu kaynaklarla çalışmanın diğer Azure HDInsight.
- Microsoft Apache Hive ile veri Power BI görselleştirin Azure HDInsight.
- Interactive Query'deki Power BI Hive verilerini Azure HDInsight.
- Bağlan Excel ile HDInsight'a Microsoft Hive ODBC Sürücüsü.
- Bağlan Excel kullanarak Apache Hadoop'a Power Query.
- HDInsight ile Apache Hive kullanma
- HDInsight ile Apache Pig kullanma
- HDInsight ile MapReduce işleri kullanma