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