我試圖首次安裝和配置配置單元與mongo-hadoop-core 2.0.2。我已經安裝了hadoop 2.8.0,Hive 2.1.1和MongoDB 3.4.6。並且單獨運行時一切正常。無法使用mongo-hadoop連接器將Hive與MongoDB連接
我的問題是,我無法將MongoDB與Hive連接。如上所述,我正在使用mongo-Hadoop連接器https://github.com/mongodb/mongo-hadoop/wiki/Hive-Usage 將必需的jar添加到Hadoop和Hive庫中。即使我將它們從hive控制檯添加到hive.sh或運行時。 我得到錯誤而執行創建表查詢
我的查詢是
CREATE EXTERNAL TABLE testHive
(
id STRING,
name STRING
)
STORED BY 'com.mongodb.hadoop.hive.MongoStorageHandler'
WITH SERDEPROPERTIES('mongo.columns.mapping'='{"id":"_id","name":"name"}')
TBLPROPERTIES('mongo.uri'='mongodb://localhost:27017/hiveDb.testHive');
而且我得到以下錯誤
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. com/mongodb/hadoop/io/BSONWritable
hive> ERROR hive.ql.exec.DDLTask - java.lang.NoClassDefFoundError: com/mongodb/hadoop/io/BSONWritable
at com.mongodb.hadoop.hive.BSONSerDe.initialize(BSONSerDe.java:132)
at org.apache.hadoop.hive.serde2.SerDeUtils.initializeSerDe(SerDeUtils.java:537)
at org.apache.hadoop.hive.metastore.MetaStoreUtils.getDeserializer(MetaStoreUtils.java:424)
at org.apache.hadoop.hive.metastore.MetaStoreUtils.getDeserializer(MetaStoreUtils.java:411)
at org.apache.hadoop.hive.ql.metadata.Table.getDeserializerFromMetaStore(Table.java:279)
at org.apache.hadoop.hive.ql.metadata.Table.getDeserializer(Table.java:261)
這表明,COM/MongoDB的/ Hadoop的/ IO/BSONWritable class不在類路徑中,但我添加了所需的(mongo-hadoop-core.jar)jar和class。 罐子的版本我使用
蒙戈 - Hadoop的核心2.0.2,
蒙戈 - Hadoop的蜂巢2.0.2,
蒙戈的Java驅動程序3.0.2
謝謝
嘗試使用這兩種方法,仍然沒有工作。 然而,在降級到mongo-hadoop的v1.5.1之後 - *。jar它起作用了。看起來像以前的版本,即2.0.2與hadoop和配置單元不兼容。 –
是的..版本兼容性可以是根本的情況! –