2017-08-13 55 views
0

這是關於使用MongoDB驅動程序在HIVE和MongoDB之間建立連接。我已經通過網上的鏈接,並已經注意到,許多人只是輕而易舉地通過它。MongoDB Hive連通性 - JAR問題

然而,我一直在剛剛獲得連接建立的主要問題。

首先,我在Windows 64位系統上使用Cloudera Quickstart VM 5.5。 該VM託管Hadoop沙箱。

我在桌面上安裝了MongoDB(與Cloudera VM同樣的一臺)。沒有對MongoDB數據庫進行身份驗證。

我已經下載了3個用於連接2個環境的連接罐。

下面是列出的步驟: -

  1. 創建有關MongoDB和填充數據收集。 MongoDB的數據庫服務器運行在端口27017

  2. 入門配置單元外殼和 添加了以下jar文件到類路徑: -

mongo-hadoop-core-2.0.2.jar 
mongo-hadoop-hive-2.0.2.jar 
mongo-java-driver-3.5.0.jar 

(最後一個 - 蒙戈-Java的驅動程序是從一個從mongodb本身引用的網站上下載的)

我將上面的jar文件上傳到HDFS中提到的目錄低,然後終於推出HIVE外殼和蜂巢外殼本身添加的罐子: -

> ADD JAR hdfs:///tmp/hive/mongo/mongo-hadoop-core-2.0.2.jar; 
> ADD JAR hdfs:///tmp/hive/mongo/mongo-hadoop-hive-2.0.2.jar; 
> ADD JAR hdfs:///tmp/hive/mongo/mongo-java-driver-3.5.0.jar; 

然後我逃離這是應該的工作HIVE外殼下面的命令: -

CREATE TABLE RAVINE 
    ( 
     id INT, 
     h_name STRING, 
     h_age INT 
    ) 
    STORED BY "com.mongodb.hadoop.hive.MongoStorageHandler" 
    WITH SERDEPROPERTIES ('mongo.columns.mapping'='{"id":"_id","h_name":"name","h_age":"a 
ge"}')  TBLPROPERTIES("mongo.uri"="mongodb://100.96.237.185:27017/test.beehive"); 

我得到的錯誤是一樣的通過以上提到Arvind的 -

失敗:執行錯誤,從返回碼org.apache.hadoop.hive.ql.exec.DDLTask。 COM /的MongoDB/UTIL/JSON

我經歷了Cloudera的日誌去看看是什麼錯誤,並在此日誌stumpled: - 從Cloudera公司

日誌文件

enter image description here

如果你會看到上面的錯誤日誌。它說

「無法讀取jar文件」,java.util.zip。zipcollection無效END 頭(壞中央目錄偏移)

這是相當令人困惑,因爲我已經獲得此相同的jar文件 - 從https://mongodb.github.io/mongo-java-driver/

爲什麼將一個罐子下載>的「蒙戈的Java驅動程序」從同一個網站導致這種類型的錯誤?我假設了一個損壞的jar文件的可能性,所以我嘗試從3.5.0下載各種驅動程序版本。一路下降到3.0.4!沒有變化 - 同樣的錯誤。

現在,這是我的問題。在該網站上下載Java驅動程序,MongoDB的顯示行家扶養: -

enter image description here

所以我的問題很簡單!如何從mongoDB網站下載一個jar給我這樣的錯誤 - 如錯誤的抵消!

有沒有人對我下一步應該怎麼做任何建議,大多數網站上的鏈接,如https://github.com/mongodb/mongo-hadoop/wiki/Hive-Usage 似乎聽起來,這是一個非常簡單的30分鐘即可過程,但它採取了我幾天去這個狀態。

任何幫助,甚至建議表示讚賞。

回答

0

這些jar應該放在你的本地unix目錄下,而不是HDFS上。將所有這些jar放在您運行Hive查詢的UNIX框上的某個目錄中,然後添加它。

hive> ADD JAR /home/hive/mongo/mongo-hadoop-core-2.0.2.jar;

如果仍然不起作用嘗試降級到v1.5.1mongo-hadoop-*.jar

請查看與此類似的問題。 Unable to connect Hive with MongoDB using mongo-hadoop connector

+0

感謝Sandeep的回覆。我從當地的centos虛擬機中添加了jar(如你所建議的那樣) - >仍然有同樣的錯誤。我把罐子降級到「mongo-hadoop-hive-1.5.1.jar」和「mongo-hadoop-core-1.5.1.jar」,但仍然有同樣的錯誤。 (Incidentaly這兩個罐子不是那些拋出錯誤的罐子)。似乎拋出錯誤的jar是MongoDB自己的jar - 「mongo-java-driver-3.5.0.jar」。正如你可以看到的 - 我已經試過舊版本,直到2.14.2。我在這裏錯過了什麼 - 在github上的鏈接表明這個過程是一件輕而易舉的事情! – Mario