if-then-else在pig中输入文件名

ffvjumwh  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(371)

我正在分析多个文件。是否可以基于输入文件名对关系执行不同的操作。
详情如下:-
文件1.txt
识别号

AB     1010123232

BC     1023200023

文件2.txt
识别号

ef     1010123232

gh     1023200023

预期产量

file1.txt

AB 10101

BC 10232

file2.txt

ef  101

gh  102

.清管器

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
请告知实现这一目标的任何方法。

7tofc5zh

7tofc5zh1#

我建议使用shell命令从$input变量中提取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);

相关问题