Apache Pig - STRSPLITTOBAG ()
Cette fonction est similaire à la STRSPLIT()fonction. Il divise la chaîne par un délimiteur donné et renvoie le résultat dans un sac.
Syntaxe
La syntaxe de STRSPLITTOBAG()est donnée ci-dessous. Cette fonction accepte une chaîne qui doit être fractionnée, une expression régulière et une valeur entière spécifiant la limite (le nombre de sous-chaînes que la chaîne doit être fractionnée). Cette fonction analyse la chaîne et quand elle rencontre l'expression régulière donnée, elle divise la piqûre enn nombre de sous-chaînes où n sera la valeur transmise à limit.
grunt> STRSPLITTOBAG(string, regex, limit)
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_Smith,22,newyork
002,BOB_Wilson,23,Kolkata
003,Maya_Reddy,23,Tokyo
004,Sara_Jain,25,London
005,David_Miller,23,Bhuwaneshwar
006,Maggy_Moore,22,Chennai
007,Robert_Scott,22,newyork
008,Syam_Ketavarapu,23,Kolkata
009,Mary_Carter,25,Tokyo
010,Saran_Naidu,25,London
011,Stacy_Green,25,Bhuwaneshwar
012,Kelly_Moore,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);
Voici un exemple de STRSPLITTOBAG()fonction. Si vous observez le fichier emp.txt, vous pouvez le trouver, dans lename colonne, nous avons le nom et le prénom des employés séparés par le délimiteur “_”.
Dans cet exemple, nous essayons de diviser le nom et le prénom de l'employé et d'obtenir le résultat dans un sac en utilisant STRSPLITTOBAG() fonction.
grunt> strsplittobag_data = FOREACH emp_data GENERATE (id,name), STRSPLITTOBAG (name,'_',2);
Le résultat de l'instruction sera stocké dans la relation nommée strsplittobag_data. Vérifier le contenu de la relationstrsplittobag_data, en utilisant l'opérateur Dump comme indiqué ci-dessous.
grunt> Dump strsplittobag_data;
((1,Robin_Smith),{(Robin),(Smith)})
((2,BOB_Wilson),{(BOB),(Wilson)})
((3,Maya_Reddy),{(Maya),(Reddy)})
((4,Sara_Jain),{(Sara),(Jain)})
((5,David_Miller),{(David),(Miller)})
((6,Maggy_Moore),{(Maggy),(Moore)})
((7,Robert_Scott),{(Robert),(Scott)})
((8,Syam_Ketavarapu),{(Syam),(Ketavarapu)})
((9,Mary_Carter),{(Mary),(Carter)})
((10,Saran_Naidu),{(Saran),(Naidu)})
((11,Stacy_Green),{(Stacy),(Green)})
((12,Kelly_Moore),{(Kelly),(Moore)})