Có một câu hỏi ở đây connect from java to Hive nhưng tôi là khác nhauConnect Hive thorugh Java JDBC
hive của tôi chạy trên machine1 và tôi cần phải vượt qua một số truy vấn sử dụng máy chủ Java chạy ở machine2. Theo tôi hiểu Hive có giao diện JDBC với mục đích nhận các truy vấn từ xa. Tôi mất mã từ đây - HiveServer2 Clients
Tôi đã cài đặt phụ thuộc được viết trong bài viết: -
- hive-jdbc * .jar
- hive-dịch vụ * .jar
- libfb303-0.9. 0.jar
- libthrift-0.9.0.jar
- log4j-1.2.16.jar
- slf4j-api-1.6.1.jar
- slf4j-log4j12-1.6.1.jar
- commons-logging-1.0.4.jar
Tuy nhiên tôi đã java.lang.NoClassDefFoundError lỗi tại thời gian biên dịch Full Lỗi:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/conf/Configuration
at org.apache.hive.jdbc.HiveConnection.createBinaryTransport(HiveConnection.java:393)
at org.apache.hive.jdbc.HiveConnection.openTransport(HiveConnection.java:187)
at org.apache.hive.jdbc.HiveConnection.<init>(HiveConnection.java:163)
at org.apache.hive.jdbc.HiveDriver.connect(HiveDriver.java:105)
at java.sql.DriverManager.getConnection(DriverManager.java:571)
at java.sql.DriverManager.getConnection(DriverManager.java:215)
at com.bidstalk.tools.RawLogsQuerySystem.HiveJdbcClient.main(HiveJdbcClient.java:25)
Một câu hỏi tại StackOverflow khuyến khích để thêm phụ thuộc Hadoop API trong Maven - Hive Error
Tôi không hiểu tại sao tôi cần API hadoop cho khách hàng để kết nối với Hive. Không nên trình điều khiển JDBC bất khả tri của hệ thống truy vấn cơ bản? Tôi chỉ cần vượt qua một số truy vấn SQL?
Edit: Tôi đang sử dụng Cloudera (5.3.1), tôi nghĩ tôi cần phải thêm CDH phụ thuộc. Ví dụ Cloudera đang chạy hadoop 2.5.0 và HiveServer2
Nhưng máy chủ đang ở máy 1. Trên máy mã nên biên dịch ít nhất và tôi chỉ gặp sự cố khi chạy!
phiên bản được sử dụng của hadoop và hive là gì? –