Apache Pig - SOSTITUISCI ()
Questa funzione viene utilizzata per sostituire tutti i caratteri in una data stringa con i nuovi caratteri.
Sintassi
Di seguito è riportata la sintassi di REPLACE()funzione. Questa funzione accetta tre parametri, vale a dire,
string- La stringa che deve essere sostituita. Se vogliamo sostituire la stringa all'interno di una relazione, dobbiamo passare il nome della colonna a cui appartiene la stringa.
regEXP - Qui dobbiamo passare la stringa / espressione regolare che vogliamo sostituire.
newChar - Qui dobbiamo passare il nuovo valore della stringa.
grunt> REPLACE(string, 'regExp', 'newChar');
Esempio
Supponiamo che esista un file denominato emp.txt nel HDFS directory /pig_data/come mostrato di seguito. Questo file contiene i dettagli del dipendente come ID, nome, età e città.
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 abbiamo caricato questo file in Pig con una relazione denominata emp_data come mostrato di seguito.
grunt> emp_data = LOAD 'hdfs://localhost:9000/pig_data/emp1.txt' USING PigStorage(',')
as (id:int, name:chararray, age:int, city:chararray);
Di seguito è riportato un esempio di REPLACE()funzione. In questo esempio, abbiamo sostituito il nome della cittàBhuwaneshwar con una forma più breve Bhuw.
grunt> replace_data = FOREACH emp_data GENERATE (id,city),REPLACE(city,'Bhuwaneshwar','Bhuw');
L'istruzione precedente sostituisce la stringa 'Bhuwaneshwar' con 'Bhuw' nella colonna denominata city nel emp_datarelazione e restituisce il risultato. Questo risultato viene memorizzato nella relazione denominatareplace_data. Verifica il contenuto della relazionereplace_data utilizzando l'operatore Dump come mostrato di seguito.
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)