【发布时间】:2018-01-15 22:25:08
【问题描述】:
我第一次尝试使用 mongo-hadoop-core 2.0.2 安装和配置 hive。我已经安装了 hadoop 2.8.0、Hive 2.1.1 和 MongoDB 3.4.6。 单独运行时一切正常。
我的问题是,我无法将 MongoDB 与 Hive 连接起来。我正在为此使用 mongo-Hadoop 连接器,如此处所述https://github.com/mongodb/mongo-hadoop/wiki/Hive-Usage 所需的 jars 已添加到 Hadoop 和 Hive 库中。即使我将它们添加到 hive.sh 或从 hive 控制台运行时。 执行创建表查询时出现错误
我的查询是
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 类不在类路径中,但我添加了所需的 (mongo-hadoop-core.jar) jar,并且该 jar 中存在类。 我正在使用的 jar 版本
mongo-hadoop-core 2.0.2,
mongo-hadoop-hive 2.0.2,
mongo-java-driver 3.0.2
谢谢
【问题讨论】: