Apache Pig - TOKENIZE ()

o TOKENIZE() A função Pig Latin é usada para dividir uma string (que contém um grupo de palavras) em uma única tupla e retorna uma bolsa que contém a saída da operação de divisão.

Sintaxe

Dada a seguir está a sintaxe do TOKENIZE() função.

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

Como um delimitador para o TOKENIZE() função, podemos passar espaço [], aspas duplas [""], vírgula [,], parênteses [()], estrela [*].

Exemplo

Suponha que temos um arquivo chamado student_details.txt no diretório HDFS /pig_data/como mostrado abaixo. Este arquivo contém os detalhes de um aluno como id, nome, idade e cidade. Se observarmos de perto, o nome do aluno inclui nomes e sobrenomes separados por espaço [].

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

Carregamos este arquivo no Pig com o nome da relação student_details como mostrado abaixo.

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

Tokenizando uma String

Podemos usar o TOKENIZE()função para dividir uma string. Como exemplo, vamos dividir o nome usando esta função conforme mostrado abaixo.

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

Verificação

Verifique a relação student_name_tokenize usando o DUMP operador como mostrado abaixo.

grunt> Dump student_name_tokenize;

Resultado

Ele irá produzir a seguinte saída, exibindo o conteúdo da relação student_name_tokenize do seguinte modo.

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

Outros Delímetros

Da mesma forma, incluindo o espaço [], a função TOKENIZE () aceita aspas duplas [""], coma [,], parênteses [()], estrela [*] como delimitadores.

Exemplo

Suponha que haja um arquivo chamado details.txtcom detalhes dos alunos como id, nome, idade e cidade. Na coluna de nome, este arquivo contém o nome e o sobrenome dos alunos separados por vários delimitadores, conforme mostrado abaixo.

details.txt

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

Carregamos este arquivo no Pig com o nome da relação details como mostrado abaixo.

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

Agora, tente separar o nome e o sobrenome dos alunos usando TOKENIZE () da seguinte maneira.

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

Ao verificar o tokenize_data relação usando o operador de despejo, você obterá o seguinte resultado.

grunt> Dump tokenize_data;

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