Fråga Apache Hive via JDBC-drivrutinen i HDInsight
Lär dig hur du använder JDBC-drivrutinen från ett Java-program. Skicka Apache Hive till Apache Hadoop i Azure HDInsight. Informationen i det här dokumentet visar hur du ansluter programmässigt och från SQuirreL-SQL klienten.
Mer information om Hive JDBC-gränssnittet finns i HiveJDBCInterface.
Förutsättningar
- Ett HDInsight Hadoop-kluster. Information om hur du skapar en finns i Kom igång med Azure HDInsight. Kontrollera att tjänsten HiveServer2 körs.
- Java Developer Kit (JDK) version 11 eller senare.
- SQuirreL SQL. SQuirreL är ett JDBC-klientprogram.
JDBC-anslutningssträng
JDBC-anslutningar till ett HDInsight-kluster i Azure görs via port 443. Trafiken skyddas med TLS/SSL. Den offentliga gatewayen som klustren finns bakom omdirigerar trafiken till den port som HiveServer2 faktiskt lyssnar på. Följande anslutningssträng visar formatet som ska användas för HDInsight:
jdbc:hive2://CLUSTERNAME.azurehdinsight.net:443/default;transportMode=http;ssl=true;httpPath=/hive2
Ersätt CLUSTERNAME med namnet på HDInsight-klustret.
Eller så kan du hämta anslutningen via Ambari UI > Hive > Configs > Advanced.
Värdnamn i anslutningssträng
Värdnamnet "CLUSTERNAME.azurehdinsight.net" i anslutningssträngen är samma som klustrets URL. Du kan få det via Azure Portal.
Port i anslutningssträng
Du kan bara använda port 443 för att ansluta till klustret från vissa platser utanför det virtuella Azure-nätverket. HDInsight är en hanterad tjänst, vilket innebär att alla anslutningar till klustret hanteras via en säker gateway. Du kan inte ansluta till HiveServer 2 direkt på portarna 10001 eller 10000. De här portarna exponeras inte utifrån.
Autentisering
När du upprättar anslutningen använder du HDInsight-klustrets administratörsnamn och lösenord för att autentisera. Från JDBC-klienter som SQuirreL SQL anger du administratörsnamn och lösenord i klientinställningarna.
Från ett Java-program måste du använda namnet och lösenordet när du upprättar en anslutning. Följande Java-kod öppnar till exempel en ny anslutning:
DriverManager.getConnection(connectionString,clusterAdmin,clusterPassword);
Anslut med SQuirreL SQL klient
SQuirreL SQL är en JDBC-klient som kan användas för att fjärrkörning av Hive-frågor med ditt HDInsight-kluster. Följande steg förutsätter att du redan har installerat SQuirreL SQL.
Skapa en katalog som ska innehålla vissa filer som ska kopieras från klustret.
I följande skript ersätter du
sshusermed SSH-användarkontonamnet för klustret. ErsättCLUSTERNAMEmed HDInsight-klusternamnet. Från en kommandorad ändrar du arbetskatalogen till den som skapades i föregående steg och anger sedan följande kommando för att kopiera filer från ett HDInsight-kluster: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} .Starta SQuirreL SQL program. Välj Drivrutiner till vänster i fönstret.
Välj ikonen för att skapa en drivrutin genom att välja ikonen längst upp i + dialogrutan Drivrutiner.
Lägg till följande information i dialogrutan Lägg till drivrutin:
Egenskap Värde Namn Hive Exempel-URL jdbc:hive2://localhost:443/default;transportMode=http;ssl=true;httpPath=/hive2Extra klasssökväg Använd knappen Lägg till för att lägga till alla jar-filer som du laddade ned tidigare. Klassnamn org.apache.hive.jdbc.HiveDriver
Spara inställningarna genom att välja OK.
Till vänster om fönstret SQuirreL SQL väljer du Alias. Välj sedan ikonen + för att skapa ett anslutningsalias.
Använd följande värden för dialogrutan Lägg till alias:
Egenskap Värde Namn Hive på HDInsight Drivrutinen Använd listrutan för att välja Hive-drivrutinen. URL jdbc:hive2://CLUSTERNAME.azurehdinsight.net:443/default;transportMode=http;ssl=true;httpPath=/hive2. Ersätt KLUSTERNAMN med namnet på ditt HDInsight-kluster.Användarnamn Namnet på klustrets inloggningskonto för ditt HDInsight-kluster. Standardvärdet är admin. Lösenord Lösenordet för klustrets inloggningskonto.
Viktigt
Använd knappen Test för att kontrollera att anslutningen fungerar. När Anslut till: Dialogrutan Hive i HDInsight visas väljer du Anslut för att utföra testet. Om testet lyckas visas dialogrutan Anslutningen lyckades. Om ett fel inträffar kan du gå till Felsöka.
Spara anslutningsaliaset genom att använda knappen Ok längst ned i dialogrutan Lägg till alias.
Välj Hive Anslut HDInsight från listrutan längst upp i SQuirreL SQL. När du uppmanas väljer du Anslut.
När du är ansluten anger du följande fråga SQL dialogrutan och väljer sedan ikonen Kör (en person som körs). Resultatområdet ska visa resultatet av frågan.
select * from hivesampletable limit 10;
Anslut från ett Java-exempelprogram
Ett exempel på hur du använder en Java-klient för att fråga Hive i HDInsight finns på https://github.com/Azure-Samples/hdinsight-java-hive-jdbc . Följ anvisningarna på lagringsplatsen för att skapa och köra exemplet.
Felsökning
Ett oväntat fel inträffade vid försök att öppna en SQL anslutning
Symptom: När du ansluter till ett HDInsight-kluster som är version 3.3 eller senare kan du få ett felmeddelande om att ett oväntat fel har uppstått. Stackspårningen för det här felet börjar med följande rader:
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)
Orsak: Det här felet orsakas av en äldre version av commons-codec.jar-filen som ingår i SQuirreL.
Lösning: Åtgärda det här felet med hjälp av följande steg:
Avsluta SQuirreL och gå sedan till katalogen där SQuirreL är installerat på datorn, kanske
C:\Program Files\squirrel-sql-4.0.0\lib. I katalogen SquirreL under katalogen ersätter du den befintliga commons-codec.jar med den som laddats ned frånlibHDInsight-klustret.Starta om SQuirreL. Felet bör inte längre inträffa när du ansluter till Hive på HDInsight.
Anslutning frånkopplad av HDInsight
Symptom: När du försöker ladda ned stora mängder data (till exempel flera GB) via JDBC/ODBC kopplas anslutningen oväntat från av HDInsight under nedladdningen.
Orsak: Det här felet orsakas av begränsningen på gatewaynoder. När du hämtar data från JDBC/ODBC måste alla data passera gatewaynoden. En gateway är dock inte utformad för att ladda ned stora mängder data, så gatewayen kan stänga anslutningen om den inte kan hantera trafiken.
Lösning: Undvik att använda JDBC/ODBC-drivrutinen för att ladda ned stora mängder data. Kopiera data direkt från Blob Storage i stället.
Nästa steg
Nu när du har lärt dig hur du använder JDBC för att arbeta med Hive kan du använda följande länkar för att utforska andra sätt att arbeta med Azure HDInsight.
- Visualisera Apache Hive data med Microsoft Power BI i Azure HDInsight.
- Visualisera Interaktiv fråga Hive-data med Power BI i Azure HDInsight.
- Anslut Excel till HDInsight med Microsoft Hive ODBC-drivrutinen.
- Anslut Excel till Apache Hadoop med hjälp av Power Query.
- Använda Apache Hive med HDInsight
- Använda Apache Hive med HDInsight
- Använda MapReduce-jobb med HDInsight