我正在尝试替换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
我哪里做错了?
谢谢,
发布于 2016-10-28 02:22:11
第3个字段没有明确的划分,请将第3个字段用引号括起来,然后使用您已有的field.You。
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个字段的组合
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;

https://stackoverflow.com/questions/40270011
复制相似问题