Die verwendete JDBC-Connector-Version wird nicht erwähnt.
Es gibt möglicherweise mehr als einen Server in Ihrem Cluster, auf dem Impala-Daemons ausgeführt werden. Bitte nehmen Sie die entsprechenden Änderungen in Ihrer JDBC-Verbindungs-URL vor und überprüfen Sie die Leistung auch auf diesen Servern.
Gerade falls Sie in der Dokumentation entnehmen verpasst (https://www.cloudera.com/documentation/enterprise/5-12-x/topics/impala_jdbc.html), achten Sie auf diesem Extrakt:
die neuesten JDBC-Treiber, entsprechend 0,13 bis Hive bietet erhebliche Leistungsverbesserungen für Impala-Abfragen, die zurückkehren große Ergebnismengen. Impala 2.0 und höher sind mit dem Hive 0.13 Treiber kompatibel. Wenn Sie bereits einen älteren JDBC-Treiber installiert haben und Impala 2.0 oder höher ausführen, sollten Sie einen Upgrade auf den neuesten Hive JDBC-Treiber durchführen, um die beste Leistung mit JDBC-Anwendungen zu erzielen.
Da Sie eine Remote-Computer verwenden Impala zuzugreifen, auf diese Informationen beziehen sich auch:
Wenn Sie JDBC-fähigen Anwendungen auf Hosts außerhalb des CDH Cluster verwenden, können Sie nicht die CDH verwenden Installationsprozedur auf den Nicht-CDH Hosts. Installieren Sie den JDBC-Treiber auf mindestens einem CDH-Host .... Dann laden Sie die JAR-Dateien auf jeden Client-Rechner, der JDBC mit Impala verwenden wird, ...
Falls noch nicht geschehen, aktualisieren Sie den JDBC-Connector und vergewissern Sie sich, dass alle Impalad-Instanzen ausgeführt werden. Vergleichen Sie dann die Leistungsergebnisse von ODBC und JDBC.
Dieser Link ist auch wert beziehen: https://www.cloudera.com/documentation/enterprise/5-12-x/topics/impala_troubleshooting.html
Update 1:
Referenz # 1: https://community.cloudera.com/t5/Interactive-Short-cycle-SQL/Impala-JDBC-10x-Slower-Vs-Shell/m-p/51779
Wie in der Referenz empfohlen, versuchen Sie die folgenden Parameter an die JDBC-Verbindung Hinzufügen Zeichenfolge und überprüfen Sie das Protokoll:
; LogLevel = 6; LogPath =/path/to/directory
Referenz # 2: https://issues.apache.org/jira/browse/IMPALA-2651 Sie möglicherweise die unten Einstellung berücksichtigen:
SET disable_codegen = true;
Update 2: Ich denke, man schon diese unten genannten Gläser in mindestens einem Impala-Server haben, in Ihrem Cluster.
commons-logging-X.X.X.jar
hadoop-common.jar
hive-common-X.XX.X-cdhX.X.X.jar
hive-jdbc-X.XX.X-cdhX.X.X.jar
hive-metastore-X.XX.X-cdhX.X.X.jar
hive-service-X.XX.X-cdhX.X.X.jar
httpclient-X.X.X.jar
httpcore-X.X.X.jar
libfb303-X.X.X.jar
libthrift-X.X.X.jar
log4j-X.X.XX.jar
slf4j-api-X.X.X.jar
slf4j-logXjXX-X.X.X.jar
Bitte kopieren Sie diese Gläser an die Maschine, von wo aus Sie versuchen, Impala über JDBC-Code zuzugreifen. Stellen Sie sicher, dass diese Dateien in Ihrem Klassenpfad sind, und führen Sie den JDBC-Code aus.
Ich werde das testen. –
Ich kann Hive-JDBC in meinem Centos 6.9 nicht installieren. Es gibt: Kein Paket Hive-JDBC verfügbar. Rmq: Ich glaube nicht, dass ich von den Referenz # 1 & # 2 betroffen bin, weil meine Abfragen ohne Fehler ausgeführt werden. Das Problem besteht in fetchAll-Zeilen, die auf einem externen Clusterserver sehr langsam sind. –
Aktualisierte die Antwort. Bei der Untersuchung geht es um die Verzögerung, und die Protokolle könnten zeigen, was Zeit braucht. – Marco99