pig:在许多文件中进行研究

tyky79it  于 2021-06-21  发布在  Pig
关注(0)|答案(2)|浏览(317)

我是一个新手在Pig,我有一个问题。我不知道这是否可能。
首先,我有一个文件:
?(a、b、c、d):-文件1(a)、文件2(b)、文件3(c)、文件4(a、b)、文件5(a、c)、文件6(c、b)、文件7(a、d)。
我必须在pig中创建一个脚本,获取这个文件,对于每个条目,研究这个文件的参数。。。
例如,在这个例子中,脚本必须在file1中找到参数a,在file2b中,file3c。。。
但我不知道有多少文件。它们只能有1个或2个参数。
我可以轻松加载这些文件,他们都有2列。
对于每个文件{
a=使用pigstorage(':')as(col1:chararray,col2:chararray)加载“filex”;
b=通过col1==x和col2==y过滤a;
使用pigstorage('')将b存储到“result”中;
}
这种代码可能吗?
第二种方法是,我想用相同的参数重新组合文件:对于file1、file5和file7,通过一个组,或者别的什么。。。避免重复相同的过滤。我做了很多测试,但没有发现有用的东西。谢谢:)

ou6hu8tu

ou6hu8tu1#

在这里,您可能有一个shell脚本和pig的组合。
你的Pig剧本应该像

A = load '$inputfile' using PigStorage (':') as (Col1:chararray, Col2:chararray);
B = filter A by Col1 == X AND Col2== Y;
STORE B INTO 'result' using PigStorage(' ');

然后你从一个shell中调用这个pig脚本
你可以做一个

for a in `hadoop fs cat <firstfile> | awk -F "," '{print $0}'`
do
pig -f script.pig -param inputfile=$a
done
sbdsn5lh

sbdsn5lh2#

这种代码可能吗?
不,pig只是一个数据流,没有控制流。
pig拉丁语是一种数据流语言。与通用编程语言不同,它不包括if和for等控制流结构。裁判。
您可以在pythonjava或java脚本中嵌入pig脚本以启用流控制,请参见此处。

相关问题