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)})