PIG TRIM 和 UPPER

PIG TRIM and UPPER

我是 Hadoop 编程的新手,在 pig 中寻求帮助。我有来自 simple.txt 格式的数据,格式为 , 定界符。我有两个用例。我想对所有列执行 ltrim(rtrim()),然后对选定字段执行 UPPER

这是我的脚本:

party = Load '/party_test_pig.txt' USING PigStorage(',') AS(....);
Trim_party = FOREACH Upper_party GENERATE TRIM(*);
Upper_party = FOREACH party GENERATE UPPER(col1), UPPER(col2), UPPER(col3);

Upper_party:将其变为大写后,我想查看所有列,而不仅仅是那些变为大写的列。

Trim_party: 进行了一些研究,发现 trim 所有专栏我都必须编写一个 UDF。我可以 Trim_party = FOREACH Upper_party GENERATE TRIM(col1)...TRIM(coln); 但我觉得这不是一种有效的方式并且很耗时。

有没有其他方法,我可以在不为 Trim 编写 UDF 的情况下使这个脚本工作?

提前致谢。

如果您提供数据样本会更容易。据我了解,我会这样做:

-- Load each line as one string with TextLoader
A = LOAD '/user/guest/Pig/20151112.PigTest.txt' USING TextLoader() AS (line:CHARARRAY);
-- Apply TRIM and UPPER transformation, it will keep spaces that are inside your strings
B = FOREACH A GENERATE UPPER(line) AS lineUP;
-- Split lines with your delimiter
C = FOREACH B GENERATE FLATTEN(STRSPLIT(lineUP, ',')) AS (col1:CHARARRAY, ... ,coln:CHARARRAY);
-- Select the columns you need
D = FOREACH C GENERATE TRIM(col1) AS col1T, ..., TRIM(coln) AS colnT;