Dotazování Apache Hivu prostřednictvím ovladače JDBC v HDInsightu
Naučte se používat ovladač JDBC z aplikace Java. Odeslání dotazů Apache Hive do Apache Hadoopu ve službě Azure HDInsight Informace v tomto dokumentu ukazují, jak se připojit programově a z SQuirreL SQL
klienta.
Další informace o rozhraní Hive JDBC naleznete v tématu HiveJDBCInterface.
Požadavky
- Cluster HDInsight Hadoop. Pokud ho chcete vytvořit, přečtěte si téma Začínáme se službou Azure HDInsight. Ujistěte se, že je spuštěná služba HiveServer2.
- Sada Java Developer Kit (JDK) verze 11 nebo vyšší.
- SQuirreL SQL. SQuirreL je klientská aplikace JDBC.
Připojovací řetězec JDBC
Připojení JDBC ke clusteru HDInsight v Azure se provádí přes port 443. Provoz je zabezpečený pomocí protokolu TLS/SSL. Veřejná brána, za kterou clustery sedí, přesměruje provoz na port, na který HiveServer2 skutečně naslouchá. Následující připojovací řetězec ukazuje formát, který se má použít pro HDInsight:
jdbc:hive2://CLUSTERNAME.azurehdinsight.net:443/default;transportMode=http;ssl=true;httpPath=/hive2
Parametr CLUSTERNAME
nahraďte názvem vašeho clusteru HDInsight.
Název hostitele v připojovací řetězec
Název hostitele CLUSTERNAME.azurehdinsight.net v připojovací řetězec je stejný jako adresa URL clusteru. Můžete ho získat prostřednictvím webu Azure Portal.
Port v připojovací řetězec
K připojení ke clusteru z některých míst mimo virtuální síť Azure můžete použít pouze port 443 . HDInsight je spravovaná služba, což znamená, že všechna připojení ke clusteru se spravují přes zabezpečenou bránu. K HiveServeru 2 se nemůžete připojit přímo na portech 10001 nebo 10000. Tyto porty nejsou vystavené vnějšímu prostředí.
Ověřování
Při navazování připojení použijte k ověření název a heslo správce clusteru HDInsight. V klientech JDBC, jako je SQuirreL SQL, zadejte název správce a heslo v nastavení klienta.
V aplikaci v Javě musíte při navazování připojení použít název a heslo. Například následující kód Java otevře nové připojení:
DriverManager.getConnection(connectionString,clusterAdmin,clusterPassword);
Připojení s klientem SQL SQuirreL
SQuirreL SQL je klient JDBC, který lze použít ke vzdálenému spouštění dotazů Hive s vaším clusterem HDInsight. Následující kroky předpokládají, že jste již nainstalovali SQuirreL SQL.
Vytvořte adresář, který bude obsahovat určité soubory, které se mají zkopírovat z clusteru.
V následujícím skriptu nahraďte
sshuser
názvem uživatelského účtu SSH pro cluster. NahraďteCLUSTERNAME
názvem clusteru HDInsight. Z příkazového řádku změňte pracovní adresář na pracovní adresář vytvořený v předchozím kroku a pak zadejte následující příkaz, který zkopíruje soubory z clusteru HDInsight: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} .
Spusťte aplikaci SQuirreL SQL. Nalevo od okna vyberte Ovladače.
V horní části dialogového okna Ovladače vyberte + ikonu a vytvořte ovladač.
V dialogovém okně Přidaný ovladač přidejte následující informace:
Vlastnost Hodnota Name Hive Příklad adresy URL jdbc:hive2://localhost:443/default;transportMode=http;ssl=true;httpPath=/hive2
Další cesta třídy Pomocí tlačítka Přidat přidejte všechny soubory JAR stažené dříve. Název třídy org.apache.hive.jdbc.HiveDriver Chcete-li tato nastavení uložit, vyberte OK .
Nalevo od okna SQuirreL SQL vyberte Aliasy. Pak výběrem + ikony vytvořte alias připojení.
V dialogovém okně Přidat alias použijte následující hodnoty:
Vlastnost Hodnota Name Hive ve službě HDInsight Ovladač Pomocí rozevíracího seznamu vyberte ovladač Hive . Adresa URL jdbc:hive2://CLUSTERNAME.azurehdinsight.net:443/default;transportMode=http;ssl=true;httpPath=/hive2
. Nahraďte CLUSTERNAME názvem clusteru HDInsight.Uživatelské jméno Název přihlašovacího účtu clusteru pro váš cluster HDInsight. Výchozí hodnota je správce. Heslo Heslo pro přihlašovací účet clusteru. Důležité
Pomocí tlačítka Test ověřte, že připojení funguje. Když Připojení do: Zobrazí se dialogové okno Hive ve službě HDInsight, vyberte Připojení k provedení testu. Pokud je test úspěšný, zobrazí se dialogové okno Připojení. Pokud dojde k chybě, přečtěte si téma Řešení potíží.
Pokud chcete alias připojení uložit, použijte tlačítko OK v dolní části dialogového okna Přidat alias .
V Připojení rozevírací seznam v horní části SQuirreL SQL vyberte Hive ve službě HDInsight. Po zobrazení výzvy vyberte Připojení.
Po připojení zadejte do dialogového okna dotazu SQL následující dotaz a pak vyberte ikonu Spustit (spuštěná osoba). V oblasti výsledků by se měly zobrazit výsledky dotazu.
select * from hivesampletable limit 10;
Připojení z ukázkové aplikace v Javě
Příklad použití klienta Java k dotazování Hivu ve službě HDInsight je k dispozici na adrese https://github.com/Azure-Samples/hdinsight-java-hive-jdbc. Podle pokynů v úložišti sestavte a spusťte ukázku.
Řešení problému
Při pokusu o otevření připojení SQL došlo k neočekávané chybě
Příznaky: Při připojování ke clusteru HDInsight verze 3.3 nebo vyšší může dojít k chybě, ke které došlo k neočekávané chybě. Trasování zásobníku pro tuto chybu začíná následujícími řádky:
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)
Příčina: Příčinou této chyby je starší verze commons-codec.jar souboru, který je součástí SQuirreL.
Řešení: Pokud chcete tuto chybu opravit, postupujte následovně:
Ukončete SQuirreL a pak přejděte do adresáře, kde je V systému nainstalován SQuirreL, možná
C:\Program Files\squirrel-sql-4.0.0\lib
. V adresáři SquirreL v rámcilib
adresáře nahraďte existující commons-codec.jar názvem staženým z clusteru HDInsight.Restartujte SQuirreL. K chybě by už nemělo dojít při připojování k Hivu ve službě HDInsight.
Zrušené připojení službou HDInsight
Příznaky: HDInsight neočekávaně odpojí připojení při pokusu o stažení obrovského množství dat (řekněme několik GB) prostřednictvím JDBC/ODBC.
Příčina: Toto omezení na uzlech brány způsobí tuto chybu. Při získávání dat z JDBC/ODBC musí všechna data projít uzlem Brány. Brána ale není navržená ke stažení velkého množství dat, takže brána může připojení zavřít, pokud nedokáže zpracovat provoz.
Řešení: Vyhněte se použití ovladače JDBC/ODBC ke stažení obrovského množství dat. Místo toho zkopírujte data přímo z úložiště objektů blob.
Další kroky
Teď, když jste se naučili používat JDBC pro práci s Hivem, můžete pomocí následujících odkazů prozkoumat další způsoby práce se službou Azure HDInsight.
- Vizualizace dat Apache Hivu pomocí Microsoft Power BI ve službě Azure HDInsight
- Vizualizace dat Hivu interaktivních dotazů pomocí Power BI ve službě Azure HDInsight
- Připojení Excelu do HDInsight pomocí ovladače ODBC Microsoft Hive.
- Připojení Excelu do Apache Hadoopu pomocí Power Query.
- Použití Apache Hivu se službou HDInsight
- Použití Apache Pigu se službou HDInsight
- Použití úloh MapReduce se službou HDInsight