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;
我是 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;