Apache Pig - INDEXOF ()
le INDEXOF()La fonction accepte une valeur de chaîne, un caractère et un index (entier). Il renvoie la première occurrence du caractère donné dans la chaîne, en recherchant en avant à partir de l'index donné.
Syntaxe
Ci-dessous, la syntaxe du INDEXOF() fonction.
grunt> INDEXOF(string, 'character', startIndex)
Exemple
Supposons qu'il existe un fichier nommé emp.txt dans le HDFS annuaire /pig_data/comme indiqué ci-dessous. Ce fichier contient les détails de l'employé tels que l'identifiant, le nom, l'âge et la ville.
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
Et, nous avons chargé ce fichier dans Pig avec une relation nommée emp_data comme indiqué ci-dessous.
grunt> emp_data = LOAD 'hdfs://localhost:9000/pig_data/emp.txt' USING PigStorage(',')
as (id:int, name:chararray, age:int, city:chararray);
Ci-dessous, un exemple de INDEXOF()fonction. Dans cet exemple, nous trouvons l'occurrence de la lettre'r' dans les noms de chaque employé utilisant cette fonction.
grunt> indexof_data = FOREACH emp_data GENERATE (id,name), INDEXOF(name, 'r',0);
L'instruction ci-dessus analyse le nom de chaque employé et renvoie la valeur d'index à laquelle la lettre ‘r’s'est produit pour la première fois. Si le nom ne contient pas la lettre‘r’ il renvoie la valeur -1
Le résultat de l'instruction sera stocké dans la relation nommée indexof_data. Vérifier le contenu de la relationindexof_data, en utilisant l'opérateur Dump comme indiqué ci-dessous.
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)