【发布时间】:2014-08-01 13:20:54
【问题描述】:
我是 Hadoop 和 Apache Pig 的新手。 我在 mongodb 中有一个名为 user 的集合,具有以下结构。我想通过以下方式将 _id 加载到 Apache Pig 中:
B = LOAD 'mongodb://localhost:27017/test.user' USING com.mongodb.hadoop.pig.MongoLoader ('_id:chararray,firstName:chararray,email:chararray') AS (UID,NAME,EMAIL);
但我无法加载它。名称和电子邮件已完美加载。
我正在使用这些 jar 文件
REGISTER /<path>/avro-1.7.5.jar
REGISTER /<path>/json-simple-1.1.jar
REGISTER /<path>/piggybank.jar
REGISTER /<path>/mongo-2.10.0.jar;
REGISTER /<path>/mongo-hadoop-core-1.1.0-SNAPSHOT.jar;
REGISTER /<path>/mongo-hadoop-pig-1.1.0-SNAPSHOT.jar;
REGISTER /<path>/mongo-hadoop-1.1.0-SNAPSHOT.jar;
用户集合的结构如下
{
"_class" : "UserInfo",
"_id" : ObjectId("51daf2ffed4d31f6"),
"assignments" : 0,
"contests" : 0,
"contes" : 0,
"email" : "princ@bank.com",
"firstName" : "Princessj",
"freeUploadsAllowed" : 2,
"freeUploadsDone" : 0,
"guideViewCount" : 0,
"hofAssignment" : 0,
"hofContest" : 0,
"inviteCount" : 0,
"issueType" : 0,
}
怎么可能,请帮帮我。
【问题讨论】:
-
传递一些 id 别名作为 MongoLoader 的第二个参数。在此处查看有关 idAlias 的详细信息github.com/mongodb/mongo-hadoop/blob/master/pig/README.md
-
@KonstantinV.Salikhov 感谢您的回复,但我尝试过这样 B = LOAD 'mongodb://localhost:27017/test.user' USING com.mongodb.hadoop.pig.MongoLoader ('id ,firstName:chararray,email:chararray','id') AS (UID,NAME,EMAIL);我得到了这个错误:解析失败:Pig 脚本解析失败:
pig 脚本无法验证:java.lang.RuntimeException:无法在 org.apache.pig 使用参数“[id,firstName:chararray,email:chararray,id]”实例化“com.mongodb.hadoop.pig.MongoLoader” .parser.QueryParserDriver.parse(QueryParserDriver.java:196)
标签: mongodb hadoop github apache-pig