当前位置: 首页 > 知识库问答 >
问题:

如何在hive中导入mongo数据?

微生自怡
2023-03-14

我面临一个问题。

因此,当我尝试使用下面的命令将mongo数据导入到hive时,它给了我一个错误。

CREATE EXTERNAL TABLE gok
(
id STRING,
name STRING,
state STRING,
email STRING) STORED BY 'com.mongodb.hadoop.hive.MongoStorageHandler'
WITH SERDEPROPERTIES('mongo.columns.mapping'='{"id":"_id","name":"name","state":"state"}') TBLPROPERTIES('mongo.uri'='mongodb://localhost:27017/gokul_test.play_test');

注:

使用的工具版本如下:

  • Java JDK 8
  • Hadoop:2.8.4
  • 蜂巢:2.3.3
  • MongoDB:4.2

jar版本如下,已移到HADOOP_HOME/lib和HIVE_HOME/lib:

  • mongo-hadoop-core-2.0.2。罐子
  • mongo-hadoop-hive-2.0.2。罐子
  • mongo-java-driver-2.13.2。罐子

所以错误是

失败:执行错误,从组织返回代码1。阿帕奇。hadoop。蜂箱ql.exec。这是一项艰巨的任务。org/apache/hadoop/hive/serde2/SerDe

我尝试通过手动添加罐在蜂箱,然后我收到的错误如下。

失败:执行错误,从组织返回代码1。阿帕奇。hadoop。蜂箱ql.exec。这是一项艰巨的任务。com/mongodb/hadoop/hive/BSONSerDe

两种错误都不同。

如果你知道任何解决方案或需要更多细节,请告诉我。

共有2个答案

左丘宜年
2023-03-14

它看起来像是mongo hadoop蜂箱-

尝试使用以下命令添加mongodb JAR:

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

更多信息:https://github.com/mongodb/mongo-hadoop/wiki/Hive-Usage

或者:您也可以尝试将mongodb BSON数据以AVRO格式摄取到配置单元中,然后在配置单元中构建表。这是一个漫长的过程,但它会让你的工作完成。您需要构建一个新的连接器,用于读取mongo并将其转换为avro格式。

谯志诚
2023-03-14

你应该将罐子添加到你的蜂箱会话中。

您正在使用哪个配置单元客户端

如果使用“beeline”,可以在尝试创建表之前添加JAR的完整路径:

beeline !connect jdbc:hive2://localhost:10000 “” ””

因此,一旦创建了会话,就必须使用“add jar”和jar文件的完整路径添加jar:

add jar hdfs://sandbox.hortonworks.com:8020/tmp/udfs/mongo-hadoop-hive-1.5.0-SNAPSHOT.jar;
add jar hdfs://sandbox.hortonworks.com:8020/tmp/udfs/mongo-hadoop-core-1.5.0-SNAPSHOT.jar;
add jar hdfs://sandbox.hortonworks.com:8020/tmp/udfs/mongodb-driver-3.0.4.jar;

所以下一步是删除/创建表

DROP TABLE IF EXISTS bars;

CREATE EXTERNAL TABLE bars
(
objectid STRING,
    Symbol STRING,
    TS STRING,
    Day INT,
    Open DOUBLE,
    High DOUBLE,
    Low DOUBLE,
    Close DOUBLE,
    Volume INT
)
STORED BY 'com.mongodb.hadoop.hive.MongoStorageHandler'
WITH SERDEPROPERTIES('mongo.columns.mapping'='{"objectid":"_id",
 "Symbol":"Symbol", "TS":"Timestamp", "Day":"Day", "Open":"Open", "High":"High", "Low":"Low", "Close":"Close", "Volume":"Volume"}')
TBLPROPERTIES('mongo.uri'='mongodb://localhost:27017/marketdata.minibars');

来源:https://community.cloudera.com/t5/Support-Questions/Mongodb-with-hive-Error-return-code-1-from-org-apache-hadoop/td-p/138161

 类似资料:
  • 我需要导入一些json文件到嵌入式Mongo中。我看过flapdoodle提供的测试,但我不明白它们是如何与Spring Data+Spring Boot提供的魔力相结合的。 谁能发布一些澄清的片段?

  • 我有一个应用程序开发使用流星。js;因为在本地是可以的,我现在想把它移到我的专用服务器上;我已经按照官方文件在服务器上安装了mongodb 2.6;我已通过以下方式转储了本地应用程序的数据库: 并将转储文件夹上传到我服务器上的 /var/www/mywebsite; mongodb配置为使用auth:true; 尝试着 没有插入任何内容(使用MongoShell作为根,我能看到的唯一数据库是loc

  • Hive数据的导入 从本地文件系统中导入数据到Hive表; 从HDFS上导入数据到Hive表; 从别的表中查询出相应的数据并导入到Hive表中; 在创建表的时候通过从别的表中查询出相应的记录并插入到所创建的表中。 1、从本地文件系统中导入数据到Hive表先在Hive里面创建好表 如下: hive> create table wyp (id int, name string,age int, tel

  • 问题内容: 我已经为EE开发人员安装了eclipse ide,并且收到了的导入错误 我右键单击项目文件夹->单击属性->单击Java构建路径->添加库-> JRE系统库, 但是显示的依赖项已经导入。如何导入javax.json包? 问题答案: 如果使用Maven,请将此依赖项添加到您的 对于Gradle,请将其添加到您的

  • 问题内容: 如何在Eclipse中导入jar 问题答案: 你可以通过右键单击Project→Build Path→Configure Build Path在Eclipse中添加一个jar。在“库”选项卡下,单击“添加jar”或“添加外部JAR”,然后提供jar。 上述解决方案显然是一种“快速”解决方案。但是,如果你正在从事一个需要将文件提交到源代码控制存储库的项目,我建议将Jar文件添加到源代码控

  • 问题内容: 我正在尝试运行以下简单代码来检索SSL证书: 但我收到错误消息: 我知道我必须导入OpenSSL。但是我不知道怎么做?以及从哪里获得OpenSSL?我从https://pypi.python.org/pypi/pyOpenSSL下载了一个名为pyOpenSSL的模块, 其中包含两个文件夹:pyOpenSSL-0.15.1.dist- info和OpenSSL。当我尝试添加导入OpenS