hadoop - PIG TRIM 和 UPPER

标签 hadoop apache-pig trim uppercase udf

我是 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:做了一些研究并发现,要修剪所有列,我必须编写一个 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 TRIM 和 UPPER,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33656418/

相关文章:

sql - 计算每个用户的非重复访问并将其分组

java - 如何在eclipse中使用java运行嵌入式pig程序?

vbscript - 在 vbs 中比较两个字符串时,Trim 函数不会删除字符串末尾的空格

laravel - 在中间件中修改请求?

Hadoop 和 Cassandra 基准测试

hadoop - MrJob 花费大量时间 Copy local files into hdfs

hadoop - 带有错误 2999 的 pig 脚本参数

hadoop - PIG:在一组特定的列中安排多个记录

c# - 修剪数组中的所有字符串

hadoop - xpath udf(Hive)返回所有数组元素,我想查看单独行而不是单个行中的每个数组元素