将Pig UDF应用于每个列

时间:2015-04-24 18:16:35

标签: python hive apache-pig

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

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

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

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

1 个答案:

答案 0 :(得分:1)

您可以使用PigStorage()读取整个行而不使用分隔符,并在其上调用UDF。

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

A = LOAD '/user/rawData.txt' USING PigStorage();
B = FOREACH A GENERATE CleanText($0);
DUMP B;

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