2017-08-16 24 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} } }' 
: '$' をエスケープ

は私の問題を解決しました

関連する問題