首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache Pig如何替换chararray中的所有逗号

Apache Pig如何替换chararray中的所有逗号
EN

Stack Overflow用户
提问于 2016-10-27 02:49:07
回答 1查看 688关注 0票数 0

我正在尝试替换chararray中的所有逗号,如下所示:

输入行示例:

1,compras com cartão, comprei (cp1,cp2,cp3), 206-01-01 00:00:00

输出示例:

1,compras com cartão, comprei (cp1 cp2 cp3), 206-01-01 00:00:00

使用此方法:

raw_data = LOAD 's3://datalake/example' USING org.apache.pig.piggybank.storage.CSVExcelStorage(',','NO_MULTILINE') AS (id:int, transaction:chararray, transaction_name:chararray, date:chararray);

apply_cleanness = FOREACH raw_data GENERATE id:int, ransaction:chararray, REPLACE(transaction_name,',','') as transaction_name, date:chararray;

但是这个命令只删除第一次出现的逗号,结果是:

1,compras com cartão, comprei (cp1 cp2, cp3), 206-01-01 00:00:00

我哪里做错了?

谢谢,

EN

回答 1

Stack Overflow用户

发布于 2016-10-28 02:22:11

第3个字段没有明确的划分,请将第3个字段用引号括起来,然后使用您已有的field.You。

代码语言:javascript
复制
1,compras com cartão, "comprei (cp1,cp2,cp3)", 206-01-01 00:00:00

raw_data = LOAD 's3://datalake/example' USING org.apache.pig.piggybank.storage.CSVExcelStorage(',','NO_MULTILINE') AS (id:int, transaction:chararray, transaction_name:chararray, date:chararray);
apply_cleanness = FOREACH raw_data GENERATE id:int, ransaction:chararray, REPLACE(transaction_name,',','') as transaction_name, date:chararray;

或者,可以使用逗号作为分隔符加载字段,然后在下面的load.See中将第3个字段生成为3、4、5个字段的组合

代码语言:javascript
复制
A = LOAD 'test16.txt' USING org.apache.pig.piggybank.storage.CSVExcelStorage(',');
B = FOREACH A GENERATE $0 as id:int,$1 as transaction:chararray,CONCAT(CONCAT(CONCAT(CONCAT($2,' '),$3),' '),$4) as transaction_name:chararray,$5 as date:chararray; 
DUMP B;

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40270011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档