【发布时间】:2016-02-17 20:33:57
【问题描述】:
我已经在我的桌面上安装了 Robomongo。但我无法从 Robomongo 将数据提取到配置单元表中。我已经应用了以下步骤:-
下载了所需的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。
我已将 jar 文件放在一个临时文件夹中。
在 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行的来源。您是否有与state或code相关的字段?如果是这样,也许可以发布一个示例文档。 -
我的字段名为 - 姓名、年龄和国籍。我没有名为 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.