【问题标题】:If then else input file name in pigIf then else 在 pig 中输入文件名
【发布时间】:2016-05-26 06:07:16
【问题描述】:

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

以下是详细信息:-

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.猪

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

请告知任何实现此目的的方法。

【问题讨论】:

  • 将长度添加为参数并运行脚本 X 2 ?

标签: hadoop apache-pig bigdata


【解决方案1】:

我建议使用 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);

【讨论】:

  • 你能分享一个例子吗?我认为在上面的例子中,问题是文件名被查看了 A 的模式,所以它忽略了......
  • @BigData :从您使用 unix 命令传递的输入中提取 fname。让我知道输入路径将如何?
猜你喜欢
  • 1970-01-01
  • 2013-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
相关资源
最近更新 更多