2014-04-17 16 views
6

Witam Mam do czynienia z problemem podczas próby pobrania danych ze zdalnego klastra hadoop przy użyciu hiveserver2.Hiveserver2 nie może pobrać wyniku zapytania ze zdalnego połączenia

Połączenie JDBC pracuje w tym sensie, że meta wyszukiwania danych, takich jak show tables pracuje i nawet pytania, które wymagają prostego listę danych, takich jak select * from table jest working.But także gdy zapytanie, które powoduje zmniejszenie o mapę pracę na hadoop, jest wykonywany, taki jak select count(*) from table, a następnie wyrzuca wyjątek połączenia. Widzę w dziennikach ula, że ​​zapytanie jest wykonywane bez żadnego błędu.

Próbowałem tego samego z beeline i działało, gdy podłączyłem się przy użyciu localhost, ale kiedy połączyłem się przy użyciu nazwy serwera, wykonanie właśnie się zawiesiło.

Jestem pewien, że mam pewne właściwości konfiguracyjne, które powodują ten problem.

Używam Hadoop wersję 2.0 oraz wersję Hive 0.12.0

Tylko dla jasności błąd wyrzucane po stronie klienta jest następujący

Exception in thread "main" java.sql.SQLException: org.apache.thrift.transport.TTransportException 
at org.apache.hive.jdbc.HiveStatement.execute(HiveStatement.java:203) 
at org.apache.hive.jdbc.HiveStatement.executeQuery(HiveStatement.java:300) 
at com.nanobi.contentserver.Aatest.HiveJdbcClient.main(HiveJdbcClient.java:57) 

jak mówiłem nie ma błędu na serwerze lub hive.log i kwerenda została wykonana pomyślnie. Najlepsze jest to, że błąd jest generowany podczas pobierania wyniku zapytania. Nie można znaleźć dokładnie, gdzie.

Proszę dać mi znać, jeśli konieczne są dalsze wyjaśnienia, aby zrozumieć problem

Dzięki z

+0

Czy wyświetlasz zapytanie przez Beeline? Jeśli nie, to co? Ponadto, którą wersję Thrift zainstalowałeś na miejscu? – Eli

+0

Witaj Eli, zapytanie działa poprawnie od beeline, podczas używania "localhost" lub adresu IP serwera w adresie URL połączenia. Nawet klient java działa po uruchomieniu z serwera, na którym zainstalowana jest gałąź. Problem występuje tylko podczas wykonywania zdalne połączenie i nawet wtedy widzę na konsoli Hiveserver2, że zapytanie jest wykonywane bez żadnego błędu, nic w dziennikach też. – tyagi

+0

To tylko, że Hiveserver2 nie jest w stanie pobrać wyniku zapytania. Problem jest widoczny tylko w przypadku zapytania, które powoduje zadanie mapreduce na hadoopie, takie jak 'select count (*) from table'. Pobieranie prostych zapytań przez serwer hive. Thrift pochodzi z instalacją Hive-0.12.0, więc domyślam się, że Thrift jest tej samej wersji. Proszę dać mi znać, jeśli potrzebujesz innych informacji.Pozdrawiam – tyagi

Odpowiedz

0

start Hive Serwer2 pierwszy wyprzedzeniem ..

ula --service hiveserver &

1

Ponieważ jesteś w stanie pobrać dane, oznacza to, że twoje połączenie działa poprawnie. Uruchom ponownie serwer ula i sprawdź.

Jeśli to nie da się sprawdzić, sprawdź właściwości konfiguracji mufy.

Tak jak powiedziałeś: "Próbowałem tego samego z beeline i działało, gdy połączyłem się za pomocą localhost, ale kiedy połączyłem się przy użyciu nazwy serwera, wykonanie właśnie zawiesiło się.", Sprawdź, czy nazwa hosta jest odbijana, czy nie.

Gdzie używasz połączenia JDBC do łączenia się z serwerem ula?

Powiązane problemy