2013-04-21 46 views
6

Khi tôi thực hiện:Sqoop Hive thoát với trạng thái 1

sqoop import --connect jdbc:mysql://localhost/testdb --table test --hive-table test --hive-import -m 1 

tôi nhận được thông báo lỗi sau:

13/04/21 16:42:50 ERROR tool.ImportTool: Encountered IOException running import job: java.io.IOException: Hive exited with status 1 
    at org.apache.sqoop.hive.HiveImport.executeExternalHiveScript(HiveImport.java:364) 
    at org.apache.sqoop.hive.HiveImport.executeScript(HiveImport.java:314) 
    at org.apache.sqoop.hive.HiveImport.importTable(HiveImport.java:226) 
    at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:415) 
    at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:476) 
    at org.apache.sqoop.Sqoop.run(Sqoop.java:145) 
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65) 
    at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:181) 
    at org.apache.sqoop.Sqoop.runTool(Sqoop.java:220) 
    at org.apache.sqoop.Sqoop.runTool(Sqoop.java:229) 
    at org.apache.sqoop.Sqoop.main(Sqoop.java:238) 

Tôi cố gắng để google cho nó nhưng thấy không có giải pháp. Tôi đã thiết lập Hadoop cục bộ theo kiểu phân tán giả. Hive đang chạy tốt ... Tôi đã sử dụng metastore nhúng. Bất kỳ ý tưởng nào về cách sửa lỗi này? Cảm ơn, Diddy

+0

Vui lòng chia sẻ toàn bộ đầu ra nhật ký được tạo với tham số --verbose. –

+0

Vui lòng tìm nhật ký tại đây: [pastpin] (http://www.pastebin.com/HRMZiygh) – Diddy

+0

... một số thông tin khác: xuất từ ​​mysql trực tiếp sang hdfs hoạt động mà không gặp sự cố, chỉ khi tôi cố gắng xuất sang tổ ong tôi nhận được lỗi này. Vì vậy, cảm giác của tôi là điều này không có gì để làm với thiếu trình điều khiển mysql hoặc không đủ quyền đối với bảng mysql. – Diddy

Trả lời

9

Dựa trên đăng nhập có vẻ như bạn đang đánh ngoại lệ sau đây:

13/04/22 18:34:44 INFO hive.HiveImport: Exception in thread "main" java.lang.NoSuchMethodError: org.apache.thrift.EncodingUtils.setBit (BIZ) B

Tôi đã nhìn thấy vấn đề này trước khi người dùng sử dụng HBase và Hive trong các phiên bản "không tương thích". Sự không tương thích có thể nói chung ở nhiều cấp độ, nhưng điều này đặc biệt là khi HBase và Hive đang sử dụng các phiên bản tiết kiệm khác nhau. Vì Sqoop đang thêm cả hai lọ HBase và Hive vào đường dẫn lớp, chỉ có một phiên bản tiết kiệm có thể hoạt động và do đó công cụ "thứ hai" (thường là hive) không hoạt động đúng cách.

Bạn có cơ hội cài đặt cả HBase và Hive vào hộp nơi bạn đang thực thi Sqoop không? Nếu có, bạn có thể kiểm tra phiên bản tiết kiệm mà từng dự án đang sử dụng không? Chỉ cần tìm kiếm "* tiết kiệm * .jar". Nếu câu trả lời cho cả hai câu hỏi là tích cực, thì bạn có khả năng có thể đặt HBASE_HOME thành một cái gì đó không tồn tại để buộc Sqoop không tải phiên bản tiết kiệm của HBase.

+0

Rất cám ơn sự giúp đỡ của bạn! Có, tôi có cả HBase và Hive được thiết lập trên môi trường dev địa phương của tôi. Tìm kiếm của tôi cho thấy hbase-0.94.6.1 sử dụng libthrift-0.8.0.jar trong khi hive-0.10.0 đang sử dụng libthrift-0.9.0.jar. Theo đề xuất của bạn, tôi đặt HBASE_HOME thành một con đường không tồn tại và ... tuyệt vời, giờ mọi thứ đang hoạt động! Cảm ơn rất nhiều lần vì sự giúp đỡ to lớn của bạn! – Diddy

0

Có thể có vấn đề về quyền đối với bảng mysql hoặc bạn thiếu dấu kết nối mysql trong thư mục hive lib. Xin hãy chia sẻ toàn bộ đầu ra của lệnh

+0

Cảm ơn bạn đã trả lời. Vui lòng tìm trích xuất nhật ký tại đây: http://pastebin.com/HRMZiygh. Tôi có thể xuất sang HDFS mà không gặp vấn đề gì, chỉ cần không đến Hive, do đó, vấn đề không phải là do thiếu trình điều khiển hoặc quyền MySQL. – Diddy

0

Tôi gặp phải lỗi tương tự, Điều này chắc chắn sẽ liên quan đến libthrift-0.8.0.jar và libthrift-0.9.0.jar trong hbase và hive tương ứng. Vì vậy, tôi chỉ đơn giản là chỉ HBASE_HOME của tôi đến vị trí không xác định và thực hiện bash của tôi. Sau đó, nó là tốt.

Nhưng đây là một vấn đề tôi đang phải đối mặt với Hive là bảng tôi đã cố gắng để nhập mà không thành công bây giờ nói bảng đã thoát nhưng nó thực sự không. Tôi đoán rằng các file db của metastore sẽ được viết! Vì vậy, nó thay đổi cho tôi để thay đổi tên của bảng và làm lại lệnh trong trường hợp chúng ta không muốn xóa toàn bộ thư mục của metastoredb.

2

Tôi đồng ý với câu trả lời của Jarek Jarcec Cecho.

Cách giải quyết khác là sao chép libthrift*.jar tệp từ $HIVE_HOME/lib đến $SQOOP_HOME/lib.

Các vấn đề liên quan