2017-08-16 20 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} } }'