在每個豬拉丁腳本文件中設置的一組宏,罐和屬性。已將所有這些移至common.pig。 目標是在所有豬拉丁文件中包含這個常見豬檔案。導入豬腳本時出錯
嘗試以下方法在Invoke Pig Latin script from other Pig script
方法1建議:使用運行,按預期工作。
Usage : RUN common.pig;
方法2:使用IMPORT是導致錯誤。
Usage : IMPORT 'common.pig';
Error message :
ERROR 1200: <file common.pig, line 1, column 0> Syntax error, unexpected symbol at or near 'SET'
org.apache.pig.impl.logicalLayer.FrontendException: ERROR 1000: Error during parsing. <file common_macro.pig, line 1, column 0> Syntax error, unexpected symbol at or near 'SET'
at org.apache.pig.PigServer$Graph.parseQuery(PigServer.java:1608)
at org.apache.pig.PigServer$Graph.registerQuery(PigServer.java:1547)
我想了解爲什麼第二種方法失敗。我對IMPORT的理解是,它將導入的文件直接寫入豬腳本中以代替IMPORT語句,如果是這種情況,理想情況下它不應該拋出上述錯誤。
對此的任何輸入/想法。
另外,從代碼模塊化/可維護性/執行角度來看,在上述用例中,最好使用EXEC或RUN命令來調用common.pig文件。
文件:
common.pig
SET job.priority HIGH;
-- SET few others ...;
REGISTER snappy-java-1.0.4.1.jar;
-- REGISTER piggybank, avro and other required jars
test_import.pig
IMPORT 'common.pig';
A = load 'test/part*' USING org.apache.pig.piggybank.storage.avro.AvroStorage();
DUMP A;
請加豬文件 – Mzf
@Mzf增加的公共和test_import豬腳本 –