Megosztás a következőn keresztül:


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

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.

  1. Hozzon létre egy könyvtárat, amely a fürtből másolandó bizonyos fájlokat tartalmaz.

  2. A következő szkriptben cserélje le sshuser a fürt SSH-felhasználói fiókjának nevét. Cserélje le CLUSTERNAME 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} .
    
  3. Indítsa el az SQuirreL SQL-alkalmazást. Az ablak bal oldalán válassza az Illesztőprogramok lehetőséget.

    Drivers tab on the left of the window.

  4. 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.

    SQuirreL SQL application drivers icon.

  5. 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

    add driver dialog with parameters.

    A beállítások mentéséhez kattintson az OK gombra.

  6. 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.

    `SQuirreL SQL add new alias dialog`.

  7. 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.

    add alias dialog with parameters.

    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.

  8. 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.

    connection dialog with parameters.

  9. 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;
    

    sql query dialog, including results.

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:

  1. 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, a lib címtár alatt cserélje le a meglévő commons-codec.jar a HDInsight-fürtből letöltöttre.

  2. 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.