Az Apache Hive lekérdezése a HDInsight JDBC-illesztőjén keresztül
Megtudhatja, hogyan használhatja a JDBC-illesztőprogramot Egy Java-alkalmazásból. Apache Hive-lekérdezések elküldése az Apache Hadoopnak az Azure HDInsightban. A dokumentumban található információk bemutatják, hogyan csatlakozhat programozott módon és az SQuirreL SQL
ügyféltől.
A Hive JDBC-felülettel kapcsolatos további információkért lásd : HiveJDBCInterface.
Előfeltételek
- EGY HDInsight Hadoop-fürt. A létrehozáshoz tekintse meg az Azure HDInsight használatának első lépéseit. Győződjön meg arról, hogy a HiveServer2 szolgáltatás fut.
- A Java Developer Kit (JDK) 11-es vagy újabb verziója.
- SQuirreL SQL. Az SQuirreL egy JDBC-ügyfélalkalmazás.
JDBC-kapcsolati sztring
Az Azure-beli HDInsight-fürthöz való JDBC-kapcsolatok a 443-as porton keresztül jönnek létre. A forgalom TLS/SSL használatával van biztosítva. A fürtök mögött található nyilvános átjáró átirányítja a forgalmat arra a portra, amelyen a HiveServer2 ténylegesen figyel. Az alábbi kapcsolati sztring a HDInsight formátumát mutatja be:
jdbc:hive2://CLUSTERNAME.azurehdinsight.net:443/default;transportMode=http;ssl=true;httpPath=/hive2
Cserélje le a CLUSTERNAME
kifejezést a HDInsight-fürt nevére.
Gazdagép neve a kapcsolati sztring
A kapcsolati sztring "CLUSTERNAME.azurehdinsight.net" gazdagépneve megegyezik a fürt URL-címével. Az Azure Portalon keresztül is beszerezheti.
Port a kapcsolati sztring
Csak a 443-es portot használhatja a fürthöz való csatlakozáshoz az Azure-beli virtuális hálózaton kívüli helyekről. A HDInsight egy felügyelt szolgáltatás, ami azt jelenti, hogy a fürthöz való összes kapcsolat biztonságos átjárón keresztül van felügyelve. A HiveServer 2-hez közvetlenül nem csatlakozhat az 10001-ben vagy az 10000-ben. Ezek a portok nincsenek kívülről kitéve.
Hitelesítés
A kapcsolat létrehozásakor használja a HDInsight-fürt rendszergazdai nevét és jelszavát a hitelesítéshez. JDBC-ügyfelekből, például az SQuirreL SQL-ből adja meg a rendszergazda nevét és jelszavát az ügyfélbeállításokban.
Egy Java-alkalmazásból a nevet és a jelszót kell használnia a kapcsolat létrehozásakor. A következő Java-kód például új kapcsolatot nyit meg:
DriverManager.getConnection(connectionString,clusterAdmin,clusterPassword);
Csatlakozás SQuirreL SQL-ügyféllel
Az SQuirreL SQL egy JDBC-ügyfél, amellyel távolról futtathat Hive-lekérdezéseket a HDInsight-fürttel. Az alábbi lépések feltételezik, hogy már telepítette az SQuirreL SQL-t.
Hozzon létre egy könyvtárat, amely a fürtből másolandó bizonyos fájlokat tartalmaz.
A következő szkriptben cserélje le
sshuser
a fürt SSH-felhasználói fiókjának nevét. Cserélje leCLUSTERNAME
a HDInsight-fürt nevére. A parancssorból módosítsa a munkahelyi könyvtárat az előző lépésben létrehozottra, majd írja be a következő parancsot a fájlok HDInsight-fürtből való másolásához: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} .
Indítsa el az SQuirreL SQL-alkalmazást. Az ablak bal oldalán válassza az Illesztőprogramok lehetőséget.
Az Illesztőprogramok párbeszédpanel tetején található ikonok közül válassza ki az + ikont az illesztőprogram létrehozásához.
A Hozzáadott illesztőprogram párbeszédpanelen adja hozzá a következő információkat:
Tulajdonság Érték Név Hive Példa URL-címe jdbc:hive2://localhost:443/default;transportMode=http;ssl=true;httpPath=/hive2
Extra osztály elérési útja A Hozzáadás gombbal adja hozzá a korábban letöltött összes jar-fájlt. Osztály neve org.apache.hive.jdbc.HiveDriver A beállítások mentéséhez kattintson az OK gombra.
Az SQuirreL SQL-ablak bal oldalán válassza az Aliasok lehetőséget. Ezután válassza ki az + ikont egy kapcsolati alias létrehozásához.
Használja a következő értékeket az Alias hozzáadása párbeszédpanelen:
Tulajdonság Érték Név Hive a HDInsighton Illesztő A legördülő menüben válassza ki a Hive-illesztőt . URL-cím jdbc:hive2://CLUSTERNAME.azurehdinsight.net:443/default;transportMode=http;ssl=true;httpPath=/hive2
. Cserélje le a CLUSTERNAME kifejezést a HDInsight-fürt nevére.Felhasználónév A HDInsight-fürt fürt bejelentkezési fiókjának neve. Az alapértelmezett beállítás a rendszergazda. Jelszó A fürt bejelentkezési fiókjának jelszava. Fontos
A Teszt gombbal ellenőrizze, hogy működik-e a kapcsolat. Amikor Csatlakozás: Hive on HDInsight párbeszédpanel jelenik meg, válassza a Csatlakozás a teszt végrehajtásához. Ha a teszt sikeres, megjelenik egy Csatlakozás ion sikeres párbeszédpanel. Ha hiba történik, tekintse meg a hibaelhárítást.
A kapcsolati alias mentéséhez használja az Alias hozzáadása párbeszédpanel alján található Ok gombot.
A Csatlakozás és az SQuirreL SQL tetején található legördülő menüben válassza a Hive on HDInsight lehetőséget. Amikor a rendszer kéri, válassza a Csatlakozás.
Miután csatlakozott, írja be a következő lekérdezést az SQL-lekérdezés párbeszédpanelre, majd válassza a Futtatás ikont (egy futó személy). Az eredményterületen a lekérdezés eredményeinek kell megjelennie.
select * from hivesampletable limit 10;
Csatlakozás egy Java-példaalkalmazásból
A Hive HDInsighton való lekérdezésére szolgáló Java-ügyféllel kapcsolatos példa a következő címen https://github.com/Azure-Samples/hdinsight-java-hive-jdbcérhető el: . A minta létrehozásához és futtatásához kövesse az adattár utasításait.
Hibaelhárítás
Váratlan hiba történt egy SQL-kapcsolat megnyitásának megkísérlése közben
Tünetek: Ha 3.3-es vagy újabb verziójú HDInsight-fürthöz csatlakozik, váratlan hiba léphet fel. A hiba veremkövetése a következő sorokkal kezdődik:
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)
Ok: Ezt a hibát egy régebbi commons-codec.jar SQuirreL-fájl okozza.
Megoldás: A hiba elhárításához kövesse az alábbi lépéseket:
Lépjen ki az SQuirreL-ből, majd lépjen arra a könyvtárra, ahol az SQuirreL telepítve van a rendszeren.
C:\Program Files\squirrel-sql-4.0.0\lib
A SquirreL könyvtárban, alib
címtár alatt cserélje le a meglévő commons-codec.jar a HDInsight-fürtből letöltöttre.Indítsa újra az SQuirreL-t. A hiba többé nem fordulhat elő a HIVE-hez való csatlakozáskor a HDInsighton.
A HDInsight megszakította a kapcsolatot
Tünetek: A HDInsight váratlanul megszakítja a kapcsolatot, amikor nagy mennyiségű adatot próbál letölteni (például több GB-t) a JDBC/ODBC-n keresztül.
Ok: Az átjárócsomópontok korlátozása okozza ezt a hibát. A JDBC/ODBC-ből való adatbeolvasáskor minden adatnak át kell haladnia az átjárócsomóponton. Az átjárók azonban nem úgy lettek kialakítva, hogy nagy mennyiségű adatot töltsenek le, így az átjáró bezárhatja a kapcsolatot, ha nem tudja kezelni a forgalmat.
Megoldás: Ne használjon JDBC/ODBC-illesztőt nagy mennyiségű adat letöltéséhez. Másolja az adatokat közvetlenül a Blob Storage-ból.
Következő lépések
Most, hogy megtanulta, hogyan használhatja a JDBC-t a Hive használatára, az alábbi hivatkozások segítségével megismerheti az Azure HDInsight használatának egyéb módjait.
- Apache Hive-adatok vizualizációja a Microsoft Power BI-val az Azure HDInsightban.
- Interaktív lekérdezési Hive-adatok vizualizációja a Power BI-val az Azure HDInsightban.
- Csatlakozás Excelből HDInsightba a Microsoft Hive ODBC-illesztőprogrammal.
- Csatlakozás Excelt az Apache Hadoopba a Power Query használatával.
- Az Apache Hive használata a HDInsighttal
- Az Apache Pig használata a HDInsighttal
- MapReduce-feladatok használata a HDInsightban