Apache Pig - BagToString ()

The Pig Latin BagToString()função é usada para concatenar os elementos de uma bolsa em uma string. Ao concatenar, podemos colocar um delimitador entre esses valores (opcional).

Geralmente as bolsas estão desordenadas e podem ser organizadas usando ORDER BY operador.

Sintaxe

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

grunt> BagToString(vals:bag [, delimiter:chararray])

Exemplo

Suponha que temos um arquivo chamado dateofbirth.txt no diretório HDFS /pig_data/como mostrado abaixo. Este arquivo contém a data de nascimento.

dateofbirth.txt

22,3,1990
23,11,1989
1,3,1998
2,6,1980
26,9,1989

E carregamos este arquivo no Pig com o nome da relação dob como mostrado abaixo.

grunt> dob = LOAD 'hdfs://localhost:9000/pig_data/dateofbirth.txt' USING PigStorage(',')
   as (day:int, month:int, year:int);

Convertendo Bolsa em Corda

Usando o bagtostring()função, podemos converter os dados no saco em string. Vamos agrupar odobrelação. A operação de grupo produzirá uma bolsa contendo todas as tuplas da relação.

Agrupe a relação dob usando o Group All operador, e armazena o resultado na relação nomeada group_dob como mostrado abaixo.

grunt> group_dob = Group dob All;

Isso produzirá uma relação conforme mostrado abaixo.

grunt> Dump group_dob; 
 
(all,{(26,9,1989),(2,6,1980),(1,3,1998),(23,11,1989),(22,3,1990)})

Aqui, podemos observar uma bolsa tendo todas as datas de nascimento como tuplas dela. Agora, vamos converter o saco em string usando a funçãoBagToString().

grunt> dob_string = foreach group_dob Generate BagToString(dob);

Verificação

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

grunt> Dump dob_string;

Resultado

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

(26_9_1989_2_6_1980_1_3_1998_23_11_1989_22_3_1990)