如何从shell脚本顺序调用Pig脚本

时间:2015-03-10 09:48:06

标签: shell hadoop apache-pig

我在文件中有Pig脚本的序列,我想从Shell脚本执行它 执行猪脚本sqeuenciatly。

对于Ex:

sh script.sh / it / provider / file_name PIGddl.txt

假设PIGddl.txt有像

这样的Pig脚本
  1. 记录计数
  2. 空验证e.t.c
  3. 如果所有Pig查询都在一个文件中,那么如何从Shell脚本执行pig脚本?

3 个答案:

答案 0 :(得分:2)

下面的想法是有效的,但是如果你想要顺序进程,比如1执行那么执行2 else执行3种流程,你可以和Oozie一起运行和安排工作。

#!/bin/sh
x=1
while [ $x -le 3 ]
 do

echo "pig_dcnt$x.pig will be  run"

pig  -f /home/Scripts/PigScripts/pig_dcnt$x.pig --param timestamp=$timestamp1

x=$(( $x + 1 ))

done

答案 1 :(得分:0)

我还没有对此进行过测试,但我确信这样可以正常使用。

假设您有两个要使用shell脚本运行的pig文件,那么您将编写一个shell脚本文件,其中包含以下内容:

#!/bin/bash

pig

exec pig_script_file1.pig

exec pig_script_file2.pig

所以当你运行这个shell脚本时,它最初会执行pig命令并进入grunt shell并在那里按照你提到的顺序执行你的猪文件

更新

  

上述解决方案无效。请参考下面的那个   测试

使用以下内容更新脚本文件,以便它可以按照您定义的顺序运行您的pig文件

#!/bin/bash

pig pig_script_file1.pig

pig pig_script_file2.pig

答案 2 :(得分:0)

这是你必须做的 1.将xxx.pig文件保存在某个位置# 2.从shell执行这个pig脚本使用下面的命令 pig -p xx = date(如果你有一些参数要传递)-p xyz = value(如果有另一个参数要传递)-f /path/xxx.pig -f用于从.pig文件执行生成的代码行。