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

PIG: how filter a field with special characteres

我需要过滤重音单词列表,因为是葡萄牙语。

负载正在工作:

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')

但是它returns没有线条,我相信是因为“ã”。

我能做什么?

我可以使用您上面描述的过滤器(在 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)