我正在解析多个文件。 是否可以根据输入文件名对关系执行不同的操作。
以下是详情:
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
请告知任何方法来实现这一目标。
答案 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);