将 Pig UDF 应用于每一列

Apply a Pig UDF to every column

我正在尝试在 Pig 中编写一个 Python UDF 来清理 table 中的所有列。我见过的 Pig UDF 示例都在单个列上工作。

在 Hive 中,我可以做类似的事情,

INSERT OVERWRITE TABLE <table_name>
SELECT TRANSFORM (
 col1, col2, col3
)
USING 'clean.py'
AS (
 col1, col2, col3
);

这会一次性清除所有列。想知道我是否可以在 Pig 中制作类似的东西。谢谢

您可以使用 PigStorage() 读取没有分隔符的整行并调用 UDF。

REGISTER CleanUDF.jar;
DEFINE CleanText com.soc.pig.udf.CleanText;

A = LOAD '/user/rawData.txt' USING PigStorage();
B = FOREACH A GENERATE CleanText([=10=]);
DUMP B;

根据您的分隔符,您可以在 UDF 内拆分和实现您的逻辑,您需要清理所有列。