执行错误,return 来自 org.apache.hadoop.hive.ql.exec.DDLTask 的代码 1。 com/mongodb/util/JSON
Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. com/mongodb/util/JSON
我正在尝试将 MongoDb 与 Hadoop 连接。我在 Ubuntu 14.04 中安装了 Hadoop-1.2.1。我安装了 MongoDB-3.0.4,还在配置单元 session 中下载并添加了 mongo-hadoop-hive-1.3.0.jar
、mongo-java-driver-2.13.2.jar
罐子。我已经下载了 mongo-connector.sh
(在 site 中找到)并将其包含在 Hadoop_Home/lib 下。
我已经设置了这样的输入和输出源:
hive> set MONGO_INPUT=mongodb://[user:password@]<MongoDB Instance IP>:27017/DBname.collectionName;
hive> set MONGO_OUTPUT=mongodb://[user:password@]<MongoDB Instance IP>:27017/DBname.collectionName;
hive> add JAR brickhouse-0.7.0.jar;
hive> create temporary function collect as 'brickhouse.udf.collect.CollectUDAF';
我在MongoDb中的collection是这样的:
> db.shows.find()
{ "_id" : ObjectId("559eb22fa7999b1a5f50e4e6"), "title" : "Arrested Development", "airdate" : "November 2, 2003", "network" : "FOX" }
{ "_id" : ObjectId("559eb238a7999b1a5f50e4e7"), "title" : "Stella", "airdate" : "June 28, 2005", "network" : "Comedy Central" }
{ "_id" : ObjectId("559eb23ca7999b1a5f50e4e8"), "title" : "Modern Family", "airdate" : "September 23, 2009", "network" : "ABC" }
>
现在我正在尝试创建一个 Hive table
CREATE EXTERNAL TABLE mongoTest(title STRING,network STRING)
> STORED BY 'com.mongodb.hadoop.hive.MongoStorageHandler'
> WITH SERDEPROPERTIES('mongo.columns.mapping'='{"title":"name",”airdate”:”date”,”network”:”name”}')
> TBLPROPERTIES('mongo.uri'='${hiveconf:MONGO_INPUT}');
当我运行这个命令时,它说
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. com/mongodb/util/JSON
然后我添加了 hive-json-serde.jar
和 hive-serdes-1.0-SNAPSHOT.jar
罐子并尝试再次创建 table。但错误仍然存在。我该如何纠正这个错误?
解析器看到了智能引号 - ”
”airdate”:”date”,”network”:”name”
他们应该是
"airdate":"date","network":"name"
我实际上在 Hadoop_Home/lib 文件夹中添加了 mongo-hadoop-core-1.3.0.jar
、 mongo-hadoop-hive-1.3.0.jar
和 mongo-java-driver-2.13.2.jar
罐子。然后我能够从 MongoDb 获取数据到 Hive 而没有任何错误。
我正在尝试将 MongoDb 与 Hadoop 连接。我在 Ubuntu 14.04 中安装了 Hadoop-1.2.1。我安装了 MongoDB-3.0.4,还在配置单元 session 中下载并添加了 mongo-hadoop-hive-1.3.0.jar
、mongo-java-driver-2.13.2.jar
罐子。我已经下载了 mongo-connector.sh
(在 site 中找到)并将其包含在 Hadoop_Home/lib 下。
我已经设置了这样的输入和输出源:
hive> set MONGO_INPUT=mongodb://[user:password@]<MongoDB Instance IP>:27017/DBname.collectionName;
hive> set MONGO_OUTPUT=mongodb://[user:password@]<MongoDB Instance IP>:27017/DBname.collectionName;
hive> add JAR brickhouse-0.7.0.jar;
hive> create temporary function collect as 'brickhouse.udf.collect.CollectUDAF';
我在MongoDb中的collection是这样的:
> db.shows.find()
{ "_id" : ObjectId("559eb22fa7999b1a5f50e4e6"), "title" : "Arrested Development", "airdate" : "November 2, 2003", "network" : "FOX" }
{ "_id" : ObjectId("559eb238a7999b1a5f50e4e7"), "title" : "Stella", "airdate" : "June 28, 2005", "network" : "Comedy Central" }
{ "_id" : ObjectId("559eb23ca7999b1a5f50e4e8"), "title" : "Modern Family", "airdate" : "September 23, 2009", "network" : "ABC" }
>
现在我正在尝试创建一个 Hive table
CREATE EXTERNAL TABLE mongoTest(title STRING,network STRING)
> STORED BY 'com.mongodb.hadoop.hive.MongoStorageHandler'
> WITH SERDEPROPERTIES('mongo.columns.mapping'='{"title":"name",”airdate”:”date”,”network”:”name”}')
> TBLPROPERTIES('mongo.uri'='${hiveconf:MONGO_INPUT}');
当我运行这个命令时,它说
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. com/mongodb/util/JSON
然后我添加了 hive-json-serde.jar
和 hive-serdes-1.0-SNAPSHOT.jar
罐子并尝试再次创建 table。但错误仍然存在。我该如何纠正这个错误?
解析器看到了智能引号 - ”
”airdate”:”date”,”network”:”name”
他们应该是
"airdate":"date","network":"name"
我实际上在 Hadoop_Home/lib 文件夹中添加了 mongo-hadoop-core-1.3.0.jar
、 mongo-hadoop-hive-1.3.0.jar
和 mongo-java-driver-2.13.2.jar
罐子。然后我能够从 MongoDb 获取数据到 Hive 而没有任何错误。