【问题标题】:MongoDB Hadoop IntegrationMongoDB Hadoop 集成
【发布时间】:2016-02-17 20:33:57
【问题描述】:

我已经在我的桌面上安装了 Robomongo。但我无法从 Robomongo 将数据提取到配置单元表中。我已经应用了以下步骤:-

  1. 下载了所需的jars-mongo-java-driver-2.13.3.jar, mongo-hadoop-core-1.4.0.jar,mongo-hadoop-hive-1.4.0.jar,mongodb-driver -3.2.1-javadoc.jar。

  2. 我已将 jar 文件放在一个临时文件夹中。

  3. 在 hive 脚本中,我添加了这些 jar 文件。我使用的脚本如下:-

添加 JAR /tmp/mongodb/jarfiles/mongo-java-driver-2.13.3.jar;

添加 JAR /tmp/mongodb/jarfiles/mongo-hadoop-core-1.4.0.jar;

添加 JAR /tmp/mongodb/jarfiles/mongo-hadoop-hive-1.4.0.jar;

添加 JAR /tmp/mongodb/jarfiles/mongodb-driver-3.2.1-javadoc.jar

创建表个人

( id 字符串,

名称字符串,

年龄STRING,

国籍STRING

)

由“com.mongodb.hadoop.hive.MongoStorageHandler”存储

WITH SERDEPROPERTIES('mongo.columns.mapping'='{"id":"_id","name":"Name","age":"Age","nationality":"Nationality"}')

TBLPROPERTIES('mongo.uri'='mongodb://localhost:port/admin.test_1');

在本地主机中,我给出了 IP 地址,在端口中,我给出了端口号。 admin 是数据库名称,而 test_1 是我要摄取的集合。 每次运行此代码时,我都会收到以下错误:-

错误:处理语句时出错:java.net.URISyntaxException:绝对 URI 中的相对路径:SERDEPROPERTIES('mongo.columns.mapping'='{"id":%22_id%22,%22name%22:%22Name %22,%22age%22:%22Age%22,%22nationality%22:%22Nationality%22%7D') (state=,code=1)

当我在上面的代码中使用 SERDEPROPERTIES('mongo.columns.mapping'='{}') 保持其他所有内容不变时,我收到以下错误:-

错误:处理语句时出错:java.net.URISyntaxException:索引 13 处方案名称中的非法字符:TBLPROPERTIES('mongo.uri'='mongodb://localhost:port/admin.test_1') (state= ,code=1)

我正在使用 CDH 5.4。谁能告诉我如何解决这个问题?

【问题讨论】:

  • 我也下载并添加了 mongo-java-driver-3.2.2 和 mongodb-driver-3.2.2.jar,但我仍然得到同样的错误。需要帮助!
  • 我不确定state=,code=1 行的来源。您是否有与 statecode 相关的字段?如果是这样,也许可以发布一个示例文档。
  • 我的字段名为 - 姓名、年龄和国籍。我没有名为 state 或 code 的 field 。我使用的确切脚本在这里。我认为 state=,code=1 与字段无关,因为当我将 mongo.columns.mapping 保持为空时,即当我使用 SERDEPROPERTIES('mongo.columns.mapping'='{}') 时,即使这样我也会得到状态=,code=1 错误,当我提到 mongo.column.mapping 中的字段时,情况相同
  • 嗨,1) 您使用的是哪个 MongoDB 版本? 2) 你的部署的拓扑是什么?即独立,副本集等 3)您不需要 mongodb-driver,只需要 mongo-java-driver。 4)您正在运行什么操作系统?谢谢。
  • 我使用的是 3.2.3 版本的 MongoDB。独立部署。 64 位 Windows 7.

标签: mongodb hadoop


【解决方案1】:

正如mongo-hadoop Hive 安装中所述,连接器至少需要3.0.0 版的驱动程序“uber”jar(称为“mongo-java-driver.jar”)。您似乎正在使用可能尚不支持 Hive 的 v2.13.3。

您可以从MongoDB Java Driver页面下载v3+ java uber驱动。在单击下载按钮之前,请确保选择 mongo-java-driver 和特定版本。 jar 文件名应类似于mongo-java-driver-3.x.x.jar

【讨论】:

  • 我已经下载并添加了mongo-java-driver-3.2.2。但我仍然得到同样的错误。有什么解决办法吗?
猜你喜欢
  • 2015-08-16
  • 2016-07-14
  • 2011-06-15
  • 1970-01-01
  • 1970-01-01
  • 2014-06-19
  • 2013-11-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多