Maiale Apache - INDEXOF ()
Il INDEXOF()la funzione accetta un valore stringa, un carattere e un indice (intero). Restituisce la prima occorrenza del carattere dato nella stringa, cercando in avanti dall'indice dato.
Sintassi
Di seguito è riportata la sintassi di INDEXOF() funzione.
grunt> INDEXOF(string, 'character', startIndex)
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/emp.txt' USING PigStorage(',')
as (id:int, name:chararray, age:int, city:chararray);
Di seguito è riportato un esempio di INDEXOF()funzione. In questo esempio, stiamo trovando l'occorrenza della lettera'r' nei nomi di ogni dipendente che utilizza questa funzione.
grunt> indexof_data = FOREACH emp_data GENERATE (id,name), INDEXOF(name, 'r',0);
L'istruzione precedente analizza il nome di ogni dipendente e restituisce il valore di indice in corrispondenza del quale la lettera ‘r’si è verificato per la prima volta. Se il nome non contiene la lettera‘r’ restituisce il valore -1
Il risultato dell'istruzione verrà memorizzato nella relazione denominata indexof_data. Verifica il contenuto della relazioneindexof_data, utilizzando l'operatore Dump come mostrato di seguito.
grunt> Dump indexof_data;
((1,Robin),-1)
((2,BOB),-1)
((3,Maya),-1)
((4,Sara),2)
((5,David),-1)
((6,Maggy),-1)
((7,Robert),4)
((8,Syam),-1)
((9,Mary),2)
((10,Saran),2)
((11,Stacy),-1)
((12,Kelly),-1)