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