Dotazování Apache Hivu prostřednictvím ovladače JDBC v HDInsightu
Zjistěte, jak používat ovladač JDBC z aplikace v Javě. Odeslání Apache Hive dotazů do Apache Hadoop v Azure HDInsight. Informace v tomto dokumentu ukazují, jak se připojit programově a z klienta SQuirreL SQL.
Další informace o rozhraní Hive JDBC najdete v tématu HiveJDBCInterface.
Požadavky
- Cluster HDInsight Hadoop. Pokud ho chcete vytvořit, podívejte se na stránku Začínáme s Azure HDInsight. Ujistěte se, že je spuštěná služba HiveServer2.
- Sada Java Developer Kit (JDK) verze 11 nebo novější.
- 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í TLS/SSL. Veřejná brána, za kterou clustery stojí, 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.
Nebo můžete získat připojení prostřednictvím uživatelského rozhraní Ambari > Hive > Configs > Advanced.
Název hostitele v připojovacím řetězci
Název hostitele "CLUSTERNAME.azurehdinsight.net" v připojovacím řetězci je stejný jako adresa URL clusteru. Můžete ho získat prostřednictvím Azure Portal.
Port v připojovacím řetězci
Port 443 můžete použít pouze pro připojení ke clusteru z některých míst mimo virtuální síť Azure. 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 zvenku vystavené.
Authentication
Při navazování připojení použijte k ověření jméno a heslo správce clusteru HDInsight. V klientech JDBC, jako je SQuirreL SQL zadejte jméno a heslo správce v nastavení klienta.
Z aplikace 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 SQuirreL SQL
SQuirreL SQL je klient JDBC, který lze použít ke vzdálenému spouštění dotazů Hive s clusterem HDInsight. Následující kroky předpokládají, že už máte nainstalovanou aplikaci SQuirreL SQL.
Vytvořte adresář, který bude obsahovat určité soubory, které se mají zkopírovat z vašeho clusteru.
V následujícím skriptu
sshusernahraďte názvem uživatelského účtu SSH pro cluster. NahraďteCLUSTERNAMEnázvem clusteru HDInsight. Z příkazového řádku změňte pracovní adresář na adresář vytvořený v předchozím kroku a zadáním následujícího příkazu zkopírujte 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/hive-client/lib/{commons-codec*.jar,commons-logging-*.jar,hive-*-*.jar,httpclient-*.jar,httpcore-*.jar,libfb*.jar,libthrift-*.jar} .Spusťte aplikaci SQuirreL SQL. V levé části okna vyberte Ovladače.
V horní části dialogového okna Ovladače vyberte ikonu + a vytvořte ovladač.
V dialogovém okně Přidat ovladač přidejte následující informace:
Vlastnost Hodnota Název Hive Příklad adresy URL jdbc:hive2://localhost:443/default;transportMode=http;ssl=true;httpPath=/hive2Extra cesta třídy Pomocí tlačítka Přidat přidejte všechny dříve stažené soubory JAR. Název třídy org.apache.hive.jdbc.HiveDriver
Vyberte OK a uložte tato nastavení.
Na levé straně okna SQuirreL SQL vyberte Aliases (Aliasy). Potom výběrem + ikony vytvořte alias připojení.
V dialogovém okně Přidat alias použijte následující hodnoty:
Vlastnost Hodnota Název Hive ve službě HDInsight Ovladač Pomocí rozevíracího seznamu vyberte ovladač Hive. 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 admin. Heslo Heslo pro přihlašovací účet clusteru.
Důležité
Pomocí tlačítka Test ověřte, že připojení funguje. Když Připojení na: Dialogové okno Hive ve službě HDInsight, Připojení a proveďte test. Pokud je test úspěšný, zobrazí se dialogové okno Připojení bylo úspěšné. Pokud dojde k chybě, podívejte se na ř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 rozevíracím Připojení do horní části seznamu SQuirreL SQL Hive ve službě HDInsight. Po zobrazení výzvy vyberte Připojení.
Po připojení zadejte do dialogového okna SQL dotazu 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 příkladu 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 . Postupujte podle pokynů v úložišti a sestavte a spusťte ukázku.
Řešení potíží
Při pokusu o otevření připojení SQL chyba
Příznaky: Při připojování ke clusteru HDInsight verze 3.3 nebo vyšší se může zobrazit chyba, že 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 souboru commons-codec.jar, který je součástí SQuirreL.
Řešení: Pokud chcete tuto chybu vyřešit, postupujte následovně:
Ukončete SQuirreL a přejděte do adresáře, kde je ve vašem systému nainstalovaný SQuirreL, například
C:\Program Files\squirrel-sql-4.0.0\lib. V adresáři SquirreL v adresáři nahraďte existující soubor commons-codec.jar souborem staženýmlibz clusteru HDInsight.Restartujte SQuirreL. Při připojování k Hivu ve službě HDInsight už by k této chybě nemělo dojít.
Připojení odpojené službou HDInsight
Příznaky: Při pokusu o stažení velkého množství dat (řekněme několika DATABÁZÍ) prostřednictvím JDBC nebo ODBC se při stahování připojení službou HDInsight neočekávaně odpojí.
Příčina: Příčinou této chyby je omezení uzlů brány. Při získávání dat z JDBC/ODBC musí všechna data projít přes uzel brány. Brána ale není určená ke stažení velkého množství dat, takže brána může připojení zavřít, pokud nezvládá provoz.
Řešení: Vyhněte se použití ovladače JDBC/ODBC ke stahování velkého množství dat. 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 s Azure HDInsight.
- Visualize Apache Hive data with Microsoft Power BI in Azure HDInsight.
- Vizualizujte Interactive Query Hive pomocí Power BI v Azure HDInsight.
- Připojení Excel ke službě HDInsight pomocí Microsoft Hive ODBC Driver.
- Připojení Excel k Apache Hadoop pomocí Power Query.
- Použití Apache Hive se službou HDInsight
- Použití Apache Pigu se službou HDInsight
- Použijte úlohy MapReduce s HDInsight