Apache Pig - STRSPLITTOBAG ()
Esta função é semelhante ao STRSPLIT()função. Ele divide a string por um determinado delimitador e retorna o resultado em um pacote.
Sintaxe
A sintaxe de STRSPLITTOBAG()é fornecido abaixo. Esta função aceita uma string que precisa ser dividida, uma expressão regular e um valor inteiro especificando o limite (o número de substrings que a string deve ser dividida). Esta função analisa a string e quando encontra a expressão regular fornecida, ela divide o sting emn número de substrings onde n será o valor passado para limit.
grunt> STRSPLITTOBAG(string, regex, limit)
Exemplo
Suponha que haja um arquivo chamado emp.txt no HDFS diretório /pig_data/como mostrado abaixo. Este arquivo contém os detalhes do funcionário, como id, nome, idade e cidade.
emp.txt
001,Robin_Smith,22,newyork
002,BOB_Wilson,23,Kolkata
003,Maya_Reddy,23,Tokyo
004,Sara_Jain,25,London
005,David_Miller,23,Bhuwaneshwar
006,Maggy_Moore,22,Chennai
007,Robert_Scott,22,newyork
008,Syam_Ketavarapu,23,Kolkata
009,Mary_Carter,25,Tokyo
010,Saran_Naidu,25,London
011,Stacy_Green,25,Bhuwaneshwar
012,Kelly_Moore,22,Chennai
E, carregamos este arquivo no Pig com uma relação chamada emp_data como mostrado abaixo.
grunt> emp_data = LOAD 'hdfs://localhost:9000/pig_data/emp.txt' USING PigStorage(',')
as (id:int, name:chararray, age:int, city:chararray);
A seguir está um exemplo do STRSPLITTOBAG()função. Se você observar o arquivo emp.txt, você pode descobrir que, noname coluna, temos nome e sobrenome dos funcionários separados por delemeter “_”.
Neste exemplo, estamos tentando dividir o nome e o sobrenome do funcionário e obter o resultado em uma bolsa usando STRSPLITTOBAG() função.
grunt> strsplittobag_data = FOREACH emp_data GENERATE (id,name), STRSPLITTOBAG (name,'_',2);
O resultado da declaração será armazenado na relação chamada strsplittobag_data. Verifique o conteúdo da relaçãostrsplittobag_data, usando o operador Dump conforme mostrado abaixo.
grunt> Dump strsplittobag_data;
((1,Robin_Smith),{(Robin),(Smith)})
((2,BOB_Wilson),{(BOB),(Wilson)})
((3,Maya_Reddy),{(Maya),(Reddy)})
((4,Sara_Jain),{(Sara),(Jain)})
((5,David_Miller),{(David),(Miller)})
((6,Maggy_Moore),{(Maggy),(Moore)})
((7,Robert_Scott),{(Robert),(Scott)})
((8,Syam_Ketavarapu),{(Syam),(Ketavarapu)})
((9,Mary_Carter),{(Mary),(Carter)})
((10,Saran_Naidu),{(Saran),(Naidu)})
((11,Stacy_Green),{(Stacy),(Green)})
((12,Kelly_Moore),{(Kelly),(Moore)})