HDInsight’ta JDBC sürücüsü üzerinden Apache Hive’ı sorgulama
Java uygulamasından JDBC sürücüsünü kullanmayı öğrenin. Azure HDInsight'ta Apache Hadoop'a Apache Hive sorguları göndermek için. Bu belgedeki bilgiler, program aracılığıyla ve istemciden SQuirreL SQL
nasıl bağlanılacağını gösterir.
Hive JDBC Arabirimi hakkında daha fazla bilgi için bkz . HiveJDBCInterface.
Önkoşullar
- HDInsight Hadoop kümesi. Bir tane oluşturmak için bkz . Azure HDInsight'ı kullanmaya başlama. HiveServer2 hizmetinin çalıştığından emin olun.
- Java Developer Kit (JDK) sürüm 11 veya üzeri.
- 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. Trafiğin güvenliği TLS/SSL kullanılarak sağlanır. Kümelerin arkasında yer aldığı ortak ağ geçidi, trafiği HiveServer2'nin 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.
bağlantı dizesi ana bilgisayar adı
bağlantı dizesi 'CLUSTERNAME.azurehdinsight.net' ana bilgisayar adı, küme URL'nizle aynıdır. Bunu Azure portalından alabilirsiniz.
bağlantı dizesi'de bağlantı noktası
Kümeye azure sanal ağının dışındaki bazı yerlerden bağlanmak için yalnızca 443 numaralı bağlantı noktasını kullanabilirsiniz. HDInsight yönetilen bir hizmettir ve bu da kümeye yapılan tüm bağlantıların güvenli bir Ağ Geçidi üzerinden yönetildiği anlamına gelir. HiveServer 2'ye doğrudan 10001 veya 10000 bağlantı noktaları üzerinden bağlanamazsınız. Bu bağlantı noktaları dışarıdan kullanıma sunulmaz.
Kimlik Doğrulaması
Bağlantıyı kurarken kimlik doğrulaması yapmak için HDInsight kümesi yönetici adını ve parolasını kullanın. SQuirreL SQL gibi JDBC istemcilerinden, istemci ayarlarına yönetici adı ve parola girin.
Bir Java uygulamasında 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);
SQuirreL SQL istemcisiyle Bağlan
SQuirreL SQL, HDInsight kümenizle Hive sorgularını uzaktan çalıştırmak için kullanılabilen bir JDBC istemcisidir. Aşağıdaki adımlarda, SQuirreL SQL'i zaten yüklediğiniz varsayılır.
Kümenizden kopyalanacak belirli dosyaları içeren bir dizin oluşturun.
Aşağıdaki betikte değerini kümenin SSH kullanıcı hesabı adıyla değiştirin
sshuser
. değerini HDInsight küme adıyla değiştirinCLUSTERNAME
. Bir komut satırından, iş dizininizi önceki adımda oluşturulan dizinle değiştirin ve hdInsight kümesindeki dosyaları 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/hadoop-client/{hadoop-auth.jar,hadoop-common.jar,lib/reload4j-*.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} .
SQuirreL SQL uygulamasını başlatın. Pencerenin sol tarafından 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ü Eklendi iletişim kutusunda aşağıdaki bilgileri ekleyin:
Özellik Değer Veri Akışı Adı Hive Örnek URL jdbc:hive2://localhost:443/default;transportMode=http;ssl=true;httpPath=/hive2
Ek 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.
SQuirreL SQL penceresinin sol tarafında Diğer Adlar'ı seçin. Ardından simgeyi + seçerek bir bağlantı diğer adı oluşturun.
Diğer Ad Ekle iletişim kutusu için aşağıdaki değerleri kullanın:
Özellik Değer Veri Akışı Adı HDInsight üzerinde Hive Sürücü Hive sürücüsünü seçmek için açılan listeyi 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ümenizin küme oturum açma hesabı adı. Varsayılan değer yöneticidir. 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: HDInsight'ta Hive iletişim kutusu görüntülendiğinde testi gerçekleştirmek için Bağlan seçin. Test başarılı olursa, başarılı Bağlan iletişim kutusu görürsünüz. 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.
SQuirreL SQL'in en üstündeki Bağlan açılan listesinden HDInsight'ta Hive'ı seçin. İstendiğinde Bağlan'ı seçin.
Bağlandıktan sonra SQL sorgusu iletişim kutusuna aşağıdaki sorguyu girin ve ç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 bir Java uygulamasından Bağlan
HDInsight'ta Hive'ı sorgulamak için Java istemcisi kullanma örneği adresinde https://github.com/Azure-Samples/hdinsight-java-hive-jdbcbulunabilir. Örneği derlemek ve çalıştırmak için depodaki yönergeleri izleyin.
Sorun giderme
SQL bağlantısı açmaya çalışırken Beklenmeyen Hata oluştu
Belirtiler: Sürüm 3.3 veya üzeri bir HDInsight kümesine bağlanırken beklenmeyen bir hata oluştuğuna ilişkin bir hata alabilirsiniz. Bu hatanın 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'de bulunan eski bir sürüm commons-codec.jar dosyasından kaynaklanır.
Çözüm: Bu hatayı düzeltmek için aşağıdaki adımları kullanın:
SQuirreL'dan çıkın ve sisteminizde SQuirreL'in yüklü olduğu dizine (belki de
C:\Program Files\squirrel-sql-4.0.0\lib
) gidin. SquirreL dizinindeki dizinin altındalib
, var olan commons-codec.jar HDInsight kümesinden indirilen ile değiştirin.SQuirreL'i yeniden başlatın. Hata artık HDInsight üzerinde Hive'a bağlanırken oluşmamalıdır.
HDInsight bağlantıyı kesti
Belirtiler: HDInsight, JDBC/ODBC aracılığıyla çok büyük miktarda veri indirmeye çalışırken (birkaç GB gibi) beklenmedik şekilde bağlantının bağlantısını kesmektedir.
Neden: Ağ geçidi düğümlerinin sınırlaması bu hataya neden olur. JDBC/ODBC'den veri alırken tüm verilerin Ağ Geçidi düğümünden geçmesi gerekir. Ancak ağ geçidi çok büyük miktarda veri indirecek şekilde tasarlanmamıştır, bu nedenle ağ geçidi trafiği işleyemiyorsa bağlantıyı kapatabilir.
Çö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 kullanmayı öğ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.
- Azure HDInsight'ta Microsoft Power BI ile Apache Hive verilerini görselleştirme.
- Azure HDInsight'ta Power BI ile Etkileşimli Sorgu Hive verilerini görselleştirme.
- Microsoft Hive ODBC Sürücüsü ile Excel'i HDInsight'a Bağlan.
- Power Query kullanarak Excel'i Apache Hadoop'a Bağlan.
- HDInsight ile Apache Hive kullanma
- HDInsight ile Apache Pig kullanma
- HDInsight ile MapReduce işleri kullanma