清管器装饰和鞋面

wljmcqd8  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(459)

我是新的hadoop编程,在Pig寻找帮助。我有数据来自 simple.txt 格式为 , delimeter公司。我有两个用例。我想做什么 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_party = FOREACH Upper_party GENERATE TRIM(col1)...TRIM(coln);` 但我觉得这不是一个有效的方式和耗时。
有没有其他方法,我可以让这个脚本工作,而不写自定义项修剪?
提前谢谢。
5uzkadbs

5uzkadbs1#

如果你能提供你的数据样本就容易多了。据我所知,我会这样做:

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

相关问题