我的oozie工作流代码段如下所示:
<workflow-app name="Abandonment_Workflow" xmlns="uri:oozie:workflow:0.5">
<start to="pig-0581"/>
<kill name="Kill">
<message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
<action name="pig-0581">
<pig>
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<script>/user/793972/TRM/1.pig</script>
<param>input=/data/*/*.bz2</param>
<archive>/user/a.jar#a.jar</archive>
</pig>
<ok to="fork-3d77"/>
<error to="Kill"/>
</action>
<action name="pig-a915">
<pig>
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<script>/user/793972/TRM/2.pig</script>
<param>input=/data/*/*.bz2</param>
<archive>/user/a.jar#a.jar</archive>
</pig>
<ok to="join-31be"/>
<error to="Kill"/>
</action>
.......
<end name="End"/>
</workflow-app>
在猪脚本1.pig
data = LOAD $input USING PigStorage('\t') AS
(timestamp:chararray,server:chararray,sessionid:chararray);
在猪脚本2.pig中,我想使用变量 - &#39;数据&#39;在1.pig,
cleandata = foreach数据生成.....
是否可以这样做。
如果是,那么请建议如何
答案 0 :(得分:0)
我认为你无法在猪身上实现这一目标。执行pig脚本时,编译器会将pig latin命令转换为一个或多个MR作业,这些作业将独立运行。因此,两个猪脚本无法相互通信。
但是,您可以尝试使用Pig宏。
--LoadInput.macro
DEFINE loadInput(input) returns data{
$data = LOAD '$input' USING PigStorage('\t') AS
(timestamp:chararray,server:chararray,sessionid:chararray);
}
Pig Script 1
IMPORT '/path/LoadInput.macro';
data = loadInput($input);
cleandata = FOREACH data GENERATE timestamp, sessionid;
Pig Script 2
IMPORT '/path/LoadInput.macro';
data2 = loadInput($input);
cleandata2 = FOREACH data2 GENERATE timestamp, server;