MongoDB Hive连接 - JAR问题

时间:2017-08-13 16:12:30

标签: mongodb hive

这是关于使用MongoDB驱动程序在HIVE和MongoDB之间建立连接。我已经通过在线链接,并注意到许多人只是轻松通过它。

然而,我一直面临着建立连接的重大问题。

首先,我在Windows 64位系统上使用Cloudera Quickstart VM 5.5。 此VM托管Hadoop沙箱。

我的桌面上安装了MongoDB(同样也支持Cloudera VM)。 MongoDB数据库没有身份验证。

我已经下载了用于连接2个环境的3个连接罐。

以下是步骤列表: -

  1. 在MongoDB上创建了集合并填充了数据。在端口27017上运行的MongoDB数据库服务器

  2. 启动Hive shell和 将以下jar添加到类路径中: -

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

    (最后一个 - Mongo-java-driver是从mongodb本身引用的网站下载的)

    我将上述罐子上传到下面提到的目录中的HDFS,然后最终启动了HIVE shell并在hive shell中添加了jar: -

    > 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 shell运行这个命令: -

        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上面提到的相同: -

      

    FAILED:执行错误,返回代码1   org.apache.hadoop.hive.ql.exec.DDLTask。 COM / mongodb的/ util的/ JSON

    我浏览了cloudera日志,看看错误是什么,并在这个日志上搞砸了: -

    来自cloudera的

    日志文件

    enter image description here

    如果您要查看上述错误日志。它说

      

    “无法读取jar文件”,java.util.zip.zipcollection无效END   标题(错误的中央目录偏移量)

    这很令人困惑,因为我已经获得了同样的jar文件 - >来自https://mongodb.github.io/mongo-java-driver/

    的“mongo-java-driver”

    为什么从同一网站下载的jar会导致此类错误?我假设有一个腐败的jar文件的可能性,所以我尝试从3.5.0下载各种驱动程序版本。一直到3.0.4 !!没有变化 - 同样的错误。

    现在这是我的问题。在下载java驱动程序的站点上,Mongodb显示了maven依赖性: -

    enter image description here

    所以我的问题很简单!!如何从mongoDB网站下载的jar给我这样的错误 - 例如错误的偏移!!

    有没有人对我接下来要做什么有任何建议,网上的大多数链接都是https://github.com/mongodb/mongo-hadoop/wiki/Hive-Usage 似乎听起来这是一个非常简单易行的30分钟过程,但是我花了几天才到达这个状态。

    感谢任何帮助甚至建议。

1 个答案:

答案 0 :(得分:0)

这些jar应位于本地unix目录中,而不是HDFS上。将所有这些jar放在UNIX框中的某个目录中,从那里运行Hive查询,然后将其添加为。

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

如果仍然无效,请尝试降级为v1.5.1的{​​{1}}

请参阅与此相关的类似问题。 Unable to connect Hive with MongoDB using mongo-hadoop connector