Apache Pig - TOKENIZE ()
le TOKENIZE() La fonction de Pig Latin est utilisée pour diviser une chaîne (qui contient un groupe de mots) en un seul tuple et renvoie un sac contenant la sortie de l'opération de fractionnement.
Syntaxe
Ci-dessous, la syntaxe du TOKENIZE() fonction.
grunt> TOKENIZE(expression [, 'field_delimiter'])
En tant que délimiteur de la TOKENIZE() fonction, nous pouvons passer l'espace [], les guillemets [""], la virgule [,], les parenthèses [()], l'étoile [*].
Exemple
Supposons que nous ayons un fichier nommé student_details.txt dans le répertoire HDFS /pig_data/comme indiqué ci-dessous. Ce fichier contient les détails d'un étudiant comme son identifiant, son nom, son âge et sa ville. Si nous observons de près, le nom de l'élève comprend le prénom et le nom séparés par un espace [].
student_details.txt
001,Rajiv Reddy,21,Hyderabad
002,siddarth Battacharya,22,Kolkata
003,Rajesh Khanna,22,Delhi
004,Preethi Agarwal,21,Pune
005,Trupthi Mohanthy,23,Bhuwaneshwar
006,Archana Mishra,23 ,Chennai
007,Komal Nayak,24,trivendram
008,Bharathi Nambiayar,24,Chennai
Nous avons chargé ce fichier dans Pig avec le nom de la relation student_details comme indiqué ci-dessous.
grunt> student_details = LOAD 'hdfs://localhost:9000/pig_data/student_details.txt' USING PigStorage(',')
as (id:int, name:chararray, age:int, city:chararray);
Tokeniser une chaîne
Nous pouvons utiliser le TOKENIZE()fonction pour diviser une chaîne. À titre d'exemple, divisons le nom en utilisant cette fonction comme indiqué ci-dessous.
grunt> student_name_tokenize = foreach student_details Generate TOKENIZE(name);
Vérification
Vérifier la relation student_name_tokenize en utilisant le DUMP opérateur comme indiqué ci-dessous.
grunt> Dump student_name_tokenize;
Production
Il produira la sortie suivante, affichant le contenu de la relation student_name_tokenize comme suit.
({(Rajaiv),(Reddy)})
({(siddarth),(Battacharya)})
({(Rajesh),(Khanna)})
({(Preethi),(Agarwal)})
({(Trupthi),(Mohanthy)})
({(Archana),(Mishra)})
({(Komal),(Nayak)})
({(Bharathi),(Nambiayar)})
Autres délimètres
De la même manière, y compris l'espace [], la fonction TOKENIZE () accepte les guillemets doubles [""], la virgule [,], les parenthèses [()], l'étoile [*] comme délimiteurs.
Exemple
Supposons qu'il existe un fichier nommé details.txtavec des détails sur les élèves comme l'identifiant, le nom, l'âge et la ville. Sous la colonne de nom, ce fichier contient le prénom et le nom des étudiants séparés par différents délimiteurs comme indiqué ci-dessous.
details.txt
001,"siddarth""Battacharya",22,Kolkata
002,Rajesh*Khanna,22,Delhi
003,(Preethi)(Agarwal),21,Pune
Nous avons chargé ce fichier dans Pig avec le nom de la relation details comme indiqué ci-dessous.
grunt> details = LOAD 'hdfs://localhost:9000/pig_data/details.txt' USING PigStorage(',')
as (id:int, name:chararray, age:int, city:chararray);
Maintenant, essayez de séparer le prénom et le nom des étudiants en utilisant TOKENIZE () comme suit.
grunt> tokenize_data = foreach details Generate TOKENIZE(name);
Lors de la vérification du tokenize_data relation en utilisant l'opérateur de vidage, vous obtiendrez le résultat suivant.
grunt> Dump tokenize_data;
({(siddarth),(Battacharya)})
({(Rajesh),(Khanna)})
({(Preethi),(Agarwal)})