2017-08-16 65 views
0

我正在将数据从mongodb导入hdfs。 我目前使用PIG脚本来加载数据。我需要每3小时从mongodb获取数据。为此,我需要传入mongo.input.query参数。但是我得到以下异常MongoDB Hadoop PIG脚本引发“未定义参数:gte”异常

java.io.IOException: org.apache.pig.tools.parameters.ParameterSubstitutionException: Undefined parameter : gte 
at org.apache.pig.impl.PigContext.doParamSubstitution(PigContext.java:408) 
at org.apache.pig.Main.runParamPreprocessor(Main.java:783) 
at org.apache.pig.Main.run(Main.java:577) 
at org.apache.pig.Main.main(Main.java:158) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:606) 
at org.apache.hadoop.util.RunJar.run(RunJar.java:221) 

以下是我的PIG脚本

-- First, register jar dependencies 
REGISTER mongo-java-driver-3.4.2.jar 
REGISTER mongo-hadoop-core-2.0.2.jar 
REGISTER mongo-hadoop-pig-2.0.2.jar 

SET debug 'on' 
SET mongo.input.query '{"createdDate":{ "$gte": { "$date": 1502740800000}, "$lt" : { "$date": 1502751600000} } }' 

-- Fetch Data From Mongodb 
A = LOAD 'mongodb://localhost:8080/testdb.TESTCOLLECTION' USING com.mongodb.hadoop.pig.MongoLoader(); 
DUMP A ; 

查询,而不mongo.input.query运行正常。不过,我需要根据创建的数据每3小时检索一次数据。

有什么建议吗?候选人?

欣赏帮助。

回答

0

原来这是一个格式问题。

摆脱 '$' 解决我的问题:

SET mongo.input.query '{"createdDate":{ "\$gte": { "\$date": 1502740800000}, "\$lt" : { "\$date": 1502751600000} } }'