這是關於使用MongoDB驅動程序在HIVE和MongoDB之間建立連接。我已經通過網上的鏈接,並已經注意到,許多人只是輕而易舉地通過它。MongoDB Hive連通性 - JAR問題
然而,我一直在剛剛獲得連接建立的主要問題。
首先,我在Windows 64位系統上使用Cloudera Quickstart VM 5.5。 該VM託管Hadoop沙箱。
我在桌面上安裝了MongoDB(與Cloudera VM同樣的一臺)。沒有對MongoDB數據庫進行身份驗證。
我已經下載了3個用於連接2個環境的連接罐。
下面是列出的步驟: -
創建有關MongoDB和填充數據收集。 MongoDB的數據庫服務器運行在端口27017
入門配置單元外殼和 添加了以下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公司
日誌文件
如果你會看到上面的錯誤日誌。它說
「無法讀取jar文件」,java.util.zip。zipcollection無效END 頭(壞中央目錄偏移)
這是相當令人困惑,因爲我已經獲得此相同的jar文件 - 從https://mongodb.github.io/mongo-java-driver/
爲什麼將一個罐子下載>的「蒙戈的Java驅動程序」從同一個網站導致這種類型的錯誤?我假設了一個損壞的jar文件的可能性,所以我嘗試從3.5.0下載各種驅動程序版本。一路下降到3.0.4!沒有變化 - 同樣的錯誤。
現在,這是我的問題。在該網站上下載Java驅動程序,MongoDB的顯示行家扶養: -
所以我的問題很簡單!如何從mongoDB網站下載一個jar給我這樣的錯誤 - 如錯誤的抵消!
有沒有人對我下一步應該怎麼做任何建議,大多數網站上的鏈接,如https://github.com/mongodb/mongo-hadoop/wiki/Hive-Usage 似乎聽起來,這是一個非常簡單的30分鐘即可過程,但它採取了我幾天去這個狀態。
任何幫助,甚至建議表示讚賞。
感謝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