导入pig脚本时出错

li9yvcax  于 2021-06-25  发布在  Pig
关注(0)|答案(1)|浏览(417)

在每个脚本文件中设置的一组宏、jar和属性。把这些都搬到了普普通通。Pig。目的是将这个普通的pig文件包含在所有pig拉丁文件中。
尝试了以下方法,如invoke pig latin script from other pig script中所建议的
方法1:使用run,工作正常。

Usage : RUN  common.pig;

方法2:使用导入会导致错误。

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的理解是,它将导入的文件直接写入pig脚本,而不是import语句,如果是这样的话,理想情况下它不应该抛出上述错误。
对此有任何意见/想法。
同样从代码模块化/可维护性/执行的Angular 来看,在上述用例中,最好使用exec或run命令来调用common.pig文件。
文件夹:
普通Pig

SET job.priority HIGH;
-- SET few others ...;

REGISTER snappy-java-1.0.4.1.jar;
-- REGISTER piggybank, avro and other required jars

测试输入.pig

IMPORT 'common.pig';

A = load 'test/part*' USING  org.apache.pig.piggybank.storage.avro.AvroStorage();
DUMP A;
epggiuax

epggiuax1#

SET 导入文件中不支持。
阅读import宏以显示不支持grunt shell命令-请参阅下面的
用法使用import命令将单独文件中定义的宏导入pig脚本。
import将宏定义添加到pig拉丁名称空间;然后可以调用这些宏,就好像它们是在同一个文件中定义的一样。
宏只能包含pig拉丁语句;不支持grunt shell命令。

相关问题