Query uitvoeren op Apache Hive via het JDBC-stuurprogramma in HDInsight
Meer informatie over het gebruik van het JDBC-stuurprogramma vanuit een Java-toepassing. Als u Apache Hive query's wilt verzenden naar Apache Hadoop in Azure HDInsight. De informatie in dit document laat zien hoe u verbinding maakt via een programma en vanuit de SQuirreL SQL client.
Zie HiveJDBCInterfacevoor meer informatie over de Hive JDBC-interface.
Vereisten
- Een HDInsight Hadoop-cluster. Zie Aan de slag met Azure HDInsight om er een te maken. Zorg ervoor dat de service HiveServer2 wordt uitgevoerd.
- De Java Developer Kit (JDK) versie 11 of hoger.
- SQuirreL SQL. SQuirreL is een JDBC-clienttoepassing.
JDBC-verbindingsreeks
JDBC-verbindingen met een HDInsight-cluster in Azure worden gemaakt via poort 443. Het verkeer wordt beveiligd met TLS/SSL. De openbare gateway achter de clusters leidt het verkeer om naar de poort waar HiveServer2 daadwerkelijk naar luistert. In de connection string ziet u de indeling die moet worden gebruikt voor HDInsight:
jdbc:hive2://CLUSTERNAME.azurehdinsight.net:443/default;transportMode=http;ssl=true;httpPath=/hive2
Vervang CLUSTERNAME door de naam van uw HDInsight-cluster.
U kunt de verbinding ook via de Ambari-gebruikersinterface > Hive > Configs > Advanced.
Hostnaam in connection string
Hostnaam 'CLUSTERNAME.azurehdinsight.net' in de connection string is dezelfde als uw cluster-URL. U kunt het door middel van Azure Portal.
Poort in connection string
U kunt poort 443 alleen gebruiken om verbinding te maken met het cluster vanaf sommige plaatsen buiten het virtuele Azure-netwerk. HDInsight is een beheerde service, wat betekent dat alle verbindingen met het cluster worden beheerd via een beveiligde gateway. U kunt hiveServer 2 niet rechtstreeks verbinden via poorten 10001 of 10000. Deze poorten worden niet aan de buitenwereld blootgesteld.
Verificatie
Gebruik bij het tot stand brengen van de verbinding de beheerdersnaam en het wachtwoord van het HDInsight-cluster om te verifiëren. Voer vanuit JDBC-clients, zoals SQuirreL SQL, de beheerdersnaam en het wachtwoord in clientinstellingen in.
Vanuit een Java-toepassing moet u de naam en het wachtwoord gebruiken bij het tot stand brengen van een verbinding. Met de volgende Java-code wordt bijvoorbeeld een nieuwe verbinding geopend:
DriverManager.getConnection(connectionString,clusterAdmin,clusterPassword);
Verbinding maken SQuirreL-SQL client
SQuirreL SQL is een JDBC-client die kan worden gebruikt om Hive-query's op afstand uit te voeren met uw HDInsight-cluster. In de volgende stappen wordt ervan uitgenomen dat u SQuirreL al hebt SQL.
Maak een map die bepaalde bestanden bevat die moeten worden gekopieerd uit uw cluster.
Vervang in het volgende script
sshuserdoor de naam van het SSH-gebruikersaccount voor het cluster. VervangCLUSTERNAMEdoor de naam van het HDInsight-cluster. Wijzig vanaf een opdrachtregel uw werkmap in de map die u in de vorige stap hebt gemaakt en voer vervolgens de volgende opdracht in om bestanden te kopiëren vanuit een HDInsight-cluster: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} .Start de SQuirreL-SQL toepassing. Selecteer stuurprogramma's aan de linkerkant van het venster.
Selecteer in de pictogrammen bovenaan het dialoogvenster Stuurprogramma's het + pictogram om een stuurprogramma te maken.
Voeg in het dialoogvenster Stuurprogramma toevoegen de volgende informatie toe:
Eigenschap Waarde Naam Hive Voorbeeld-URL jdbc:hive2://localhost:443/default;transportMode=http;ssl=true;httpPath=/hive2Extra klassepad Gebruik de knop Toevoegen om alle JAR-bestanden toe te voegen die u eerder hebt gedownload. Klassenaam org.apache.hive.jdbc.HiveDriver
Selecteer OK om deze instellingen op te slaan.
Selecteer aan de linkerkant van het venster SQuirreL SQL aliassen. Selecteer vervolgens het pictogram + om een verbindingsalias te maken.
Gebruik de volgende waarden voor het dialoogvenster Alias toevoegen:
Eigenschap Waarde Naam Hive in HDInsight Stuurprogramma Gebruik de vervolgkeuzerij om het Hive-stuurprogramma te selecteren. URL jdbc:hive2://CLUSTERNAME.azurehdinsight.net:443/default;transportMode=http;ssl=true;httpPath=/hive2. Vervang CLUSTERNAME door de naam van uw HDInsight-cluster.Gebruikersnaam De naam van het aanmeldingsaccount voor het cluster voor uw HDInsight-cluster. De standaardwaarde is admin. Wachtwoord Het wachtwoord voor het aanmeldingsaccount voor het cluster.
Belangrijk
Gebruik de knop Testen om te controleren of de verbinding werkt. Wanneer Verbinding maken het dialoogvenster Hive in HDInsight wordt weergegeven, selecteert u Verbinding maken de test uit te voeren. Als de test is geslaagd, ziet u het dialoogvenster Verbinding gemaakt. Zie Problemen oplossen als er een fout optreedt.
Als u de verbindingsalias wilt opslaan, gebruikt u de knop OK onder aan het dialoogvenster Alias toevoegen.
Selecteer hive Verbinding maken HDInsight in de SQL boven aan SQuirreL. Selecteer Verbinding maken wanneer hierom wordt gevraagd.
Zodra u verbinding hebt, voert u de volgende query in het SQL queryvenster in en selecteert u vervolgens het pictogram Uitvoeren (een actief persoon). In het resultatengebied moeten de resultaten van de query worden weer geven.
select * from hivesampletable limit 10;
Verbinding maken van een Java-voorbeeldtoepassing
Een voorbeeld van het gebruik van een Java-client om een query uit te voeren op Hive in HDInsight is beschikbaar op https://github.com/Azure-Samples/hdinsight-java-hive-jdbc . Volg de instructies in de opslagplaats om het voorbeeld te bouwen en uit te voeren.
Problemen oplossen
Er is een onverwachte fout opgetreden bij het openen van SQL verbinding
Symptomen: wanneer u verbinding maakt met een HDInsight-cluster met versie 3.3 of hoger, ontvangt u mogelijk een foutbericht dat er een onverwachte fout is opgetreden. De stack-trace voor deze fout begint met de volgende regels:
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)
Oorzaak: Deze fout wordt veroorzaakt door een oudere versie van het bestand commons-codec.jar in SQuirreL.
Oplossing: gebruik de volgende stappen om deze fout op te lossen:
Sluit SQuirreL af en ga vervolgens naar de map waar SQuirreL op uw systeem is geïnstalleerd, bijvoorbeeld
C:\Program Files\squirrel-sql-4.0.0\lib. Vervang in de map SquirreL onder de map de bestaande commons-codec.jar door de map die u hebt gedownloadlibuit het HDInsight-cluster.Start SQuirreL opnieuw. De fout zou niet meer moeten optreden wanneer u verbinding maakt met Hive in HDInsight.
Verbinding verbroken door HDInsight
Symptomen: wanneer u probeert een enorme hoeveelheid gegevens (bijvoorbeeld meerdere TB's) via JDBC/ODBC te downloaden, wordt de verbinding onverwacht verbroken door HDInsight tijdens het downloaden.
Oorzaak: deze fout wordt veroorzaakt door de beperking op gatewayknooppunten. Bij het verkrijgen van gegevens uit JDBC/ODBC moeten alle gegevens via het gateway-knooppunt worden doorgeven. Een gateway is echter niet ontworpen om een enorme hoeveelheid gegevens te downloaden, dus de gateway kan de verbinding sluiten als deze het verkeer niet kan verwerken.
Oplossing: vermijd het gebruik van het JDBC-/ODBC-stuurprogramma om enorme hoeveelheden gegevens te downloaden. Kopieer gegevens in plaats daarvan rechtstreeks vanuit blobopslag.
Volgende stappen
Nu u hebt geleerd hoe u JDBC gebruikt om met Hive te werken, gebruikt u de volgende koppelingen om andere manieren te verkennen om met hiv-Azure HDInsight.
- Visualiseer Apache Hive gegevens met Microsoft Power BI in Azure HDInsight.
- Visualiseer Interactive Query Hive-gegevens met Power BI in Azure HDInsight.
- Verbinding maken Excel naar HDInsight met het Microsoft Hive ODBC-stuurprogramma.
- Verbinding maken Excel naar Apache Hadoop met behulp van Power Query.
- Apache Hive gebruiken met HDInsight
- Apache Pig gebruiken met HDInsight
- MapReduce-taken gebruiken met HDInsight