Query Apache Hive through the JDBC driver in HDInsight (Wysyłanie zapytań do usługi Apache Hive za pośrednictwem sterownika JDBC w usłudze HDInsight)
Dowiedz się, jak używać sterownika JDBC z poziomu aplikacji Java. Aby przesłać zapytania apache Hive do usługi Apache Hadoop w usłudze Azure HDInsight. Informacje przedstawione w tym dokumencie pokazują, jak programowo nawiązać połączenie i z SQuirreL SQL
klienta.
Aby uzyskać więcej informacji na temat interfejsu Hive JDBC, zobacz HiveJDBCInterface.
Wymagania wstępne
- Klaster hadoop usługi HDInsight. Aby je utworzyć, zobacz Rozpoczynanie pracy z usługą Azure HDInsight. Upewnij się, że usługa HiveServer2 jest uruchomiona.
- Zestaw Java Developer Kit (JDK) w wersji 11 lub nowszej .
- SQuirreL SQL. SQuirreL to aplikacja kliencka JDBC.
Parametry połączenia sterownika JDBC
Połączenia JDBC z klastrem usługi HDInsight na platformie Azure są wykonywane za pośrednictwem portu 443. Ruch jest zabezpieczony przy użyciu protokołu TLS/SSL. Brama publiczna, za którą znajdują się klastry, przekierowuje ruch do portu, na który rzeczywiście nasłuchuje serwer HiveServer2. Poniższy parametry połączenia przedstawia format używany w usłudze HDInsight:
jdbc:hive2://CLUSTERNAME.azurehdinsight.net:443/default;transportMode=http;ssl=true;httpPath=/hive2
Element CLUSTERNAME
należy zastąpić nazwą klastra usługi HDInsight.
Nazwa hosta w parametry połączenia
Nazwa hosta "CLUSTERNAME.azurehdinsight.net" w parametry połączenia jest taka sama jak adres URL klastra. Możesz uzyskać go za pośrednictwem witryny Azure Portal.
Port w parametry połączenia
Port 443 można używać tylko do nawiązywania połączenia z klastrem z niektórych miejsc spoza sieci wirtualnej platformy Azure. HDInsight to usługa zarządzana, co oznacza, że wszystkie połączenia z klastrem są zarządzane za pośrednictwem bezpiecznej bramy. Nie można nawiązać połączenia z serwerem HiveServer 2 bezpośrednio na portach 10001 lub 10000. Te porty nie są widoczne na zewnątrz.
Uwierzytelnianie
Podczas nawiązywania połączenia użyj nazwy administratora klastra usługi HDInsight i hasła do uwierzytelniania. W przypadku klientów JDBC, takich jak SQuirreL SQL, wprowadź nazwę administratora i hasło w ustawieniach klienta.
W aplikacji Java należy użyć nazwy i hasła podczas nawiązywania połączenia. Na przykład następujący kod Java otwiera nowe połączenie:
DriverManager.getConnection(connectionString,clusterAdmin,clusterPassword);
Połączenie za pomocą klienta SQL SQuirreL
SQuirreL SQL to klient JDBC, który może służyć do zdalnego uruchamiania zapytań Hive z klastrem usługi HDInsight. W poniższych krokach założono, że zainstalowano już język SQuirreL SQL.
Utwórz katalog zawierający określone pliki do skopiowania z klastra.
W poniższym skrypcie zastąp
sshuser
ciąg nazwą konta użytkownika SSH dla klastra. Zastąp ciągCLUSTERNAME
nazwą klastra usługi HDInsight. W wierszu polecenia zmień katalog roboczy na utworzony w poprzednim kroku, a następnie wprowadź następujące polecenie, aby skopiować pliki z klastra usługi 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} .
Uruchom aplikację SQL SQuirreL. Z lewej strony okna wybierz pozycję Sterowniki.
W ikonach w górnej części okna dialogowego Sterowniki wybierz ikonę + , aby utworzyć sterownik.
W oknie dialogowym Dodano sterownik dodaj następujące informacje:
Właściwości Wartość Nazwisko Hive Przykładowy adres URL jdbc:hive2://localhost:443/default;transportMode=http;ssl=true;httpPath=/hive2
Dodatkowa ścieżka klasy Użyj przycisku Dodaj, aby dodać wszystkie pobrane wcześniej pliki jar. Nazwa klasy org.apache.hive.jdbc.HiveDriver Wybierz przycisk OK , aby zapisać te ustawienia.
Po lewej stronie okna SQuirreL SQL wybierz pozycję Aliasy. Następnie wybierz ikonę, + aby utworzyć alias połączenia.
Użyj następujących wartości w oknie dialogowym Dodawanie aliasu:
Właściwości Wartość Nazwisko Hive w usłudze HDInsight Sterownik Użyj listy rozwijanej, aby wybrać sterownik Programu Hive . URL jdbc:hive2://CLUSTERNAME.azurehdinsight.net:443/default;transportMode=http;ssl=true;httpPath=/hive2
. Zastąp CLUSTERNAME nazwą klastra usługi HDInsight:Nazwa użytkownika Nazwa konta logowania klastra dla klastra usługi HDInsight. Wartość domyślna to administrator. Hasło Hasło do konta logowania klastra. Ważne
Użyj przycisku Testuj, aby sprawdzić, czy połączenie działa. Gdy Połączenie do: zostanie wyświetlone okno dialogowe Hive w usłudze HDInsight, wybierz Połączenie, aby wykonać test. Jeśli test zakończy się pomyślnie, zostanie wyświetlone okno dialogowe pomyślnego Połączenie ion. Jeśli wystąpi błąd, zobacz Rozwiązywanie problemów.
Aby zapisać alias połączenia, użyj przycisku OK w dolnej części okna dialogowego Dodawanie aliasu .
Z listy rozwijanej Połączenie w górnej części obszaru SQuirreL SQL wybierz pozycję Hive w usłudze HDInsight. Po wyświetleniu monitu wybierz pozycję Połączenie.
Po nawiązaniu połączenia wprowadź następujące zapytanie w oknie dialogowym zapytania SQL, a następnie wybierz ikonę Uruchom (uruchomiona osoba). Obszar wyników powinien zawierać wyniki zapytania.
select * from hivesampletable limit 10;
Połączenie z przykładowej aplikacji Java
Przykład użycia klienta Java do wykonywania zapytań dotyczących programu Hive w usłudze HDInsight jest dostępny pod adresem https://github.com/Azure-Samples/hdinsight-java-hive-jdbc. Postępuj zgodnie z instrukcjami w repozytorium, aby skompilować i uruchomić przykład.
Rozwiązywanie problemów
Wystąpił nieoczekiwany błąd podczas próby otwarcia połączenia SQL
Objawy: Podczas nawiązywania połączenia z klastrem usługi HDInsight w wersji 3.3 lub nowszej może wystąpić błąd, który wystąpił nieoczekiwany błąd. Ślad stosu dla tego błędu rozpoczyna się od następujących wierszy:
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)
Przyczyna: ten błąd jest spowodowany przez starszą wersję commons-codec.jar pliku dołączonego do biblioteki SQuirreL.
Rozwiązanie: Aby naprawić ten błąd, wykonaj następujące czynności:
Zamknij program SQuirreL, a następnie przejdź do katalogu, w którym zainstalowano bibliotekę SQuirreL w systemie, na przykład
C:\Program Files\squirrel-sql-4.0.0\lib
. W katalogu SquirreL w katalogulib
zastąp istniejącą commons-codec.jar elementem pobranym z klastra usługi HDInsight.Uruchom ponownie aplikację SQuirreL. Błąd nie powinien już występować podczas nawiązywania połączenia z usługą Hive w usłudze HDInsight.
Połączenie rozłączone przez usługę HDInsight
Objawy: usługa HDInsight nieoczekiwanie rozłącza połączenie podczas próby pobrania ogromnej ilości danych (np. kilku GB) za pośrednictwem JDBC/ODBC.
Przyczyna: Ograniczenie węzłów bramy powoduje ten błąd. Podczas pobierania danych z JDBC/ODBC wszystkie dane muszą przechodzić przez węzeł bramy. Brama nie jest jednak przeznaczona do pobierania ogromnej ilości danych, więc brama może zamknąć połączenie, jeśli nie może obsłużyć ruchu.
Rozwiązanie: Unikaj używania sterownika JDBC/ODBC do pobierania ogromnych ilości danych. Zamiast tego skopiuj dane bezpośrednio z magazynu obiektów blob.
Następne kroki
Teraz, gdy wiesz już, jak używać JDBC do pracy z usługą Hive, skorzystaj z poniższych linków, aby zapoznać się z innymi sposobami pracy z usługą Azure HDInsight.
- Wizualizowanie danych usługi Apache Hive za pomocą usługi Microsoft Power BI w usłudze Azure HDInsight.
- Wizualizowanie danych programu Hive zapytań interakcyjnych za pomocą usługi Power BI w usłudze Azure HDInsight.
- Połączenie programu Excel do usługi HDInsight przy użyciu Sterownik Microsoft Hive ODBC.
- Połączenie programu Excel do usługi Apache Hadoop przy użyciu dodatku Power Query.
- Korzystanie z programu Apache Hive z usługą HDInsight
- Korzystanie z programu Apache Pig z usługą HDInsight
- Korzystanie z zadań MapReduce z usługą HDInsight