pig:如何过滤具有特殊字符的字段

mnowg1ta  于 2021-06-24  发布在  Pig
关注(0)|答案(1)|浏览(383)

我需要筛选一个重音词列表,因为它是葡萄牙语。
负载正在工作:

arq = LOAD '/user/cloudera/file1.5.txt' USING PigStorage(';') as 
(time:chararray,
cd_rastreio:chararray, 
hora:chararray, 
detalhe:chararray, 
local:chararray, 
destino:chararray);

我需要做一个这样的过滤器:

[...]
detalhe IN (
'A entrega não pode ser efetuada - Carteiro não atendido',
'A entrega não pode ser efetuada - Cliente desconhecido no local',
'A entrega não pode ser efetuada - Cliente mudou-se')

但它没有回音,我相信是因为“ã".
我能做什么?
谢谢

qqrboqgw

qqrboqgw1#

我可以使用您上面描述的过滤器(pig版本0.16),例如:

B = FILTER arq BY detalhe IN (
    'A entrega não pode ser efetuada - Carteiro não atendido',
    'A entrega não pode ser efetuada - Cliente desconhecido no local',
    'A entrega não pode ser efetuada - Cliente mudou-se');
dump

(A entrega não pode ser efetuada - Carteiro não atendido)
(A entrega não pode ser efetuada - Cliente desconhecido no local)
(A entrega não pode ser efetuada - Cliente mudou-se)

你能在hdfs中检查你的文件以确保它仍然有这个字符吗 ã 没有被以前的过程擦洗过吗?
无论如何,您可以编写正则表达式并使用 MATCHES 不使用 ã 字符,例如 . 代替 ã :

B = FILTER arq BY detalhe MATCHES 
    'A entrega n.o pode ser efetuada - (Carteiro n.o atendido|Cliente desconhecido no local|Cliente mudou-se)';
dump

(A entrega não pode ser efetuada - Carteiro não atendido)
(A entrega não pode ser efetuada - Cliente desconhecido no local)
(A entrega não pode ser efetuada - Cliente mudou-se)

相关问题