在单列上应用 Pig UDF 并自动生成所有其他列

Posted

技术标签:

【中文标题】在单列上应用 Pig UDF 并自动生成所有其他列【英文标题】:Apply Pig UDF on single column and automatically generate all other columns 【发布时间】:2015-05-28 15:58:07 【问题描述】:

我有一个 Pig UDF,可以在我的管道分隔数据文件中将 Ebcidic 字符转换为 ASCII。 我有数百列,我希望我的 UDF 应用于第 70 列。 如何在该特定列上应用 UDF 并将列数据替换为数据集中的 ASCII。

REGISTER pigudf-0.0.1.jar;
DEFINE Ebc2Asc com.z.pig.udf.Ebc2Asc;

A = LOAD '/user/T4/cobDump.txt' USING PigStorage('|');
B = FOREACH A GENERATE Ebc2Asc($71) as txt:chararray;
DUMP B;

如果我们像上面那样调用脚本,我只会得到转换后的列作为结果的一部分。如何获取所有列以及应用的 udf 列。

任何帮助表示赞赏。

【问题讨论】:

【参考方案1】:

已经有一段时间了,但听起来您想使用range projection 来自动生成其他列。它应该类似于:

B = FOREACH A GENERATE $0 .. $70, Ebc2Asc($71) as txt:chararray, $72 .. ;

【讨论】:

谢谢,这就是我要找的。​​span>

以上是关于在单列上应用 Pig UDF 并自动生成所有其他列的主要内容,如果未能解决你的问题,请参考以下文章

使用 java.lang.NoClassDefFoundError 在 AWS EMR 上运行 Pig UDF:org/apache/pig/LoadFunc

在另一个关系上使用 FOREACH 时将关系传递给 PIG UDF?

我可以在 Pig 脚本中将参数传递给 UDF 吗?

Pig 中的 SimpleTextLoader UDF

Pig如何实例化UDF对象

Pig 中的 Udfs 共享上下文