Apache Pig - REPLACE ()
Esta função é usada para substituir todos os caracteres em uma determinada string pelos novos caracteres.
Sintaxe
Dada a seguir está a sintaxe do REPLACE()função. Esta função aceita três parâmetros, a saber,
string- A string a ser substituída. Se quisermos substituir a string dentro de uma relação, temos que passar o nome da coluna à qual a string pertence.
regEXP - Aqui temos que passar a string / expressão regular que queremos substituir.
newChar - Aqui temos que passar o novo valor da string.
grunt> REPLACE(string, 'regExp', 'newChar');
Exemplo
Suponha que haja um arquivo chamado emp.txt no HDFS diretório /pig_data/como mostrado abaixo. Este arquivo contém os detalhes do funcionário, como id, nome, idade e cidade.
emp.txt
001,Robin,22,newyork
002,BOB,23,Kolkata
003,Maya,23,Tokyo
004,Sara,25,London
005,David,23,Bhuwaneshwar
006,Maggy,22,Chennai
007,Robert,22,newyork
008,Syam,23,Kolkata
009,Mary,25,Tokyo
010,Saran,25,London
011,Stacy,25,Bhuwaneshwar
012,Kelly,22,Chennai
E, carregamos este arquivo no Pig com uma relação chamada emp_data como mostrado abaixo.
grunt> emp_data = LOAD 'hdfs://localhost:9000/pig_data/emp1.txt' USING PigStorage(',')
as (id:int, name:chararray, age:int, city:chararray);
A seguir está um exemplo do REPLACE()função. Neste exemplo, substituímos o nome da cidadeBhuwaneshwar com uma forma mais curta Bhuw.
grunt> replace_data = FOREACH emp_data GENERATE (id,city),REPLACE(city,'Bhuwaneshwar','Bhuw');
A declaração acima substitui a string 'Bhuwaneshwar' com 'Bhuw' na coluna chamada city no emp_datarelação e retorna o resultado. Este resultado é armazenado na relação chamadareplace_data. Verifique o conteúdo da relaçãoreplace_data usando o operador Dump conforme mostrado abaixo.
grunt> Dump replace_data;
((1,newyork),newyork)
((2,Kolkata),Kolkata)
((3,Tokyo),Tokyo)
((4,London),London)
((5,Bhuwaneshwar),Bhuw)
((6,Chennai),Chennai)
((7,newyork),newyork)
((8,Kolkata),Kolkata)
((9,Tokyo),Tokyo)
((10,London),London)
((11,Bhuwaneshwar),Bhuw)
((12,Chennai),Chennai)