【问题标题】:Unable to connect Hive with MongoDB using mongo-hadoop connector无法使用 mongo-hadoop 连接器将 Hive 与 MongoDB 连接
【发布时间】: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

谢谢

【问题讨论】:

    标签: java mongodb hadoop hive


    【解决方案1】:

    您需要显式注册 jar。在您的 Hive 脚本中,使用 ADD JAR 命令来包含这些 JAR(核心、hive 和 Java 驱动程序),例如 ADD JAR /path-to/mongo-hadoop-hive-<version>.jar;

    如果您从 Hive shell 运行,请像这样使用。

    hive> ADD JAR /path-to/mongo-hadoop-hive-<version>.jar;

    然后执行你的查询。

    【讨论】:

    • 两种方法都试过了,还是不行。然而,在降级到 mongo-hadoop-*.jar 的 v1.5.1 后它起作用了。似乎以前的版本,即 2.0.2 与 hadoop 和 hive 不兼容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-13
    相关资源
    最近更新 更多