如果然后在猪输入文件名

时间:2016-02-15 10:56:46

标签: hadoop apache-pig bigdata

我正在解析多个文件。 是否可以根据输入文件名对关系执行不同的操作。

以下是详情:

FILE1.TXT

IDENT NUM

AB     1010123232

BC     1023200023 

FILE2.TXT

IDENT NUM

ef     1010123232

gh     1023200023

预期输出

file1.txt

AB 10101

BC 10232

file2.txt

ef  101

gh  102

ABC.pig

A= load '$input' using PigStorage();

B= foreach A generate ($fname=='file1' ? SUBSTRING(A.NUM,0,5) : ($fname=='file2' ? SUBSTRING(A.NUM,0,3): A.NUM);

但是它会在执行时出错

错误:架构中不存在fname

请告知任何方法来实现这一目标。

1 个答案:

答案 0 :(得分:0)

我建议使用$ input变量中的shell命令提取fname。

伪代码:

%declare fname  `use shell commands to extract filename from input`;

A = LOAD '$input' USING PigStorage();

B= FOREACH A GENERATE ($fname=='file1' ? SUBSTRING(A.NUM,0,5) : ($fname=='file2' ? SUBSTRING(A.NUM,0,3): A.NUM);