Apache Pig - TOKENIZE ()

los TOKENIZE() La función de Pig Latin se usa para dividir una cadena (que contiene un grupo de palabras) en una sola tupla y devuelve una bolsa que contiene la salida de la operación de división.

Sintaxis

A continuación se muestra la sintaxis de la TOKENIZE() función.

grunt> TOKENIZE(expression [, 'field_delimiter'])

Como delimitador de la TOKENIZE() función, podemos pasar espacio [], comillas dobles [""], coma [,], paréntesis [()], estrella [*].

Ejemplo

Supongamos que tenemos un archivo llamado student_details.txt en el directorio HDFS /pig_data/Como se muestra abajo. Este archivo contiene los detalles de un estudiante como identificación, nombre, edad y ciudad. Si observamos de cerca, el nombre del alumno incluye nombre y apellidos separados por espacio [].

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

Hemos cargado este archivo en Pig con el nombre de la relación. student_details Como se muestra abajo.

grunt> student_details = LOAD 'hdfs://localhost:9000/pig_data/student_details.txt' USING PigStorage(',')
   as (id:int, name:chararray, age:int,  city:chararray);

Tokenizar una cadena

Podemos usar el TOKENIZE()función para dividir una cadena. Como ejemplo, dividamos el nombre usando esta función como se muestra a continuación.

grunt> student_name_tokenize = foreach student_details  Generate TOKENIZE(name);

Verificación

Verifica la relación student_name_tokenize utilizando la DUMP operador como se muestra a continuación.

grunt> Dump student_name_tokenize;

Salida

Producirá la siguiente salida, mostrando el contenido de la relación student_name_tokenize como sigue.

({(Rajaiv),(Reddy)})
({(siddarth),(Battacharya)})
({(Rajesh),(Khanna)})
({(Preethi),(Agarwal)})
({(Trupthi),(Mohanthy)})
({(Archana),(Mishra)})
({(Komal),(Nayak)})
({(Bharathi),(Nambiayar)})

Otros Delímetros

De la misma manera, incluyendo el espacio [], la función TOKENIZE () acepta comillas dobles [""], coma [,], paréntesis [()], estrella [*] como delimitadores.

Ejemplo

Supongamos que hay un archivo llamado details.txtcon detalles de los estudiantes como identificación, nombre, edad y ciudad. Bajo la columna de nombre, este archivo contiene el nombre y apellido de los estudiantes separados por varios delimitadores como se muestra a continuación.

details.txt

001,"siddarth""Battacharya",22,Kolkata 
002,Rajesh*Khanna,22,Delhi 
003,(Preethi)(Agarwal),21,Pune

Hemos cargado este archivo en Pig con el nombre de la relación. details Como se muestra abajo.

grunt> details = LOAD 'hdfs://localhost:9000/pig_data/details.txt' USING PigStorage(',')
   as (id:int, name:chararray, age:int,  city:chararray);

Ahora, intente separar el nombre y el apellido de los estudiantes usando TOKENIZE () de la siguiente manera.

grunt> tokenize_data = foreach details Generate TOKENIZE(name);

Al verificar el tokenize_data relación usando el operador de volcado obtendrá el siguiente resultado.

grunt> Dump tokenize_data;

({(siddarth),(Battacharya)})
({(Rajesh),(Khanna)})
({(Preethi),(Agarwal)})