Spark Mode - Para executar o Pig no modo Spark, você precisa acessar um cluster Spark, Yarn ou Mesos e a instalação do HDFS. Especifique o modo Spark usando o sinalizador -x (-x spark). No modo de execução do Spark, é necessário configurar env :: SPARK_MASTER para um valor apropriado (local - local mode, yarn-client - yarn-client mode, mesos://host:port - spark on mesos or spark://host:port - spark cluster).
O
YARN e o
Mesos são gerenciadores de contêineres distribuídos.
O
YARN é especialmente projetado para cargas de trabalho do
Hadoop, enquanto o
Mesos é projetado para todos os tipos de cargas de trabalho.
Já o
Spark é uma ferramenta de processamento de dados.
O
Spark pode rodar no
Yarn, da mesma forma que o
Hadoop Map Reduce pode rodar também no
Yarn.
O
Hadoop Map Reduce é um recurso que acompanha o
Yarn, o
Spark não.
Com o Yarn, por exemplo, digamos que você tenha 4 máquinas, cada uma com 4 GB de RAM e CPUs dual core.
Você pode apresentar o
YARN a um aplicativo capaz de distribuir e paralelizar cargas de trabalho, como
MapReduce, e o
YARN responderá que é possível aceitar
16 GB de carga de trabalho do aplicativo em
8 núcleos de
CPU.
Os scripts
Pig executados no
Spark podem aproveitar o recurso de alocação dinâmica.
O recurso pode ser ativado simplesmente habilitando
spark.dynamicAllocation.enabled.
Em geral, todas as propriedades do script pig prefixado com
spark, são copiados para a configuração do aplicativo
Spark.
Veja que o serviço auxilar
Yarn precisa ser ativado no
Spark para que isso funcione.
Exemplos
Este exemplo mostra como executar o
Pig no modo
local e
mapreduce usando o comando
pig.
/* local mode */
pig -x local ...
/* Tez local mode */
pig -x tez_local ...
/* Spark local mode */
pig -x spark_local ...
/* mapreduce mode */
pig ...
-- ou
pig -x mapreduce ...
/* Tez mode */
$ pig -x tez ...
/* Spark mode */
$ pig -x spark ...
Vamos a um exemplo prático de execução de um script Pig.
Crie um arquivo de texto com o conteúdo abaixo na sua máquina, depois coloque ele na máquina virtual da cloudera através do
winscp em uma pasta a sua escolha, no meu caso, eu coloquei no sistema de arquivo local da máquina virtual cloudera em:
/toti/textos/01_exemplo_pig.txt
Paulo Muniz 11995267847 Sao Paulo Engenheiro
Ricardo Lima 21986372663 Rio de Janeiro Palestrante
Carlos Marques 31993728746 Belo Horizonte Investidor
Claudia Duarte 51998274923 Porto Alegre Engenheira
Maria Andrade 71986320865 Salvador Professora
Para que o script
Pig use esse arquivo, vamos copiar ele para o HDFS, no meu caso para a pasta
/user/toti/textos/.
Use o comando para criar a pasta para colocar o
01_exemplo_pig.txt no
HDFS:
/user/toti/textos/ no HDFS
hadoop fs -mkdir -p /user/toti/textos
Use o comando:
hadoop fs -put /toti/textos/01_exemplo_pig.txt /user/toti/textos/
Agora vamos criar o
script.
Crie um arquivo chamado
01_script.pig na sua máquina local e faça uma cópia dele para a máquina virtual cloudera na pasta de sua escolha, no meu caso eu estou usando a pasta
/toti/scripts/pig/, para fazer isso use o
winscp.
/toti/scripts/pig/01_script.pig
A = LOAD '/user/toti/textos/01_exemplo_pig.txt' using PigStorage (' ') as (FName: chararray, LName: chararray, MobileNo: chararray, City: chararray, Profession: chararray);
B = FOREACH A generate FName, LName, MobileNo, Profession;
DUMP B;
Agora é só rodar o script:
pig /toti/scripts/pig/01_script.pig
Rodamos o script no mapreduce mode, que é o default, quando não especificamos nada.
Parabéns pela execução do seu primeiro script Apache Pig com sucesso!
Modo Interativo do Pig
Você pode executar o
Pig no modo interativo usando o
shell Grunt.
Invoque o
shell Grunt usando o comando "
pig" (como mostrado abaixo) e, em seguida, insira suas instruções
Pig Latin e os comandos
Pig interativamente na linha de comando.
pig
grunt>
Exemplo
Estas instruções
Pig Latin extraem todos os IDs de usuário do arquivo
/etc/passwd.
Primeiro, copie o arquivo
/etc/passwd para o
HDFS na pasta que você tá usando, no meu caso
/user/toti/textos/ com o comando:
hadoop fs -put /etc/passwd /user/toti/textos/
Em seguida, invoque o
shell Grunt digitando o comando "
pig" (no
modo local ou
hadoop).
Depois, insira as instruções
Pig Latin interativamente no prompt
Grunt (certifique-se de incluir o ponto-e-vírgula após cada instrução).
O operador
DUMP exibirá os resultados na tela do seu terminal. (O
grunt> é o prompt do
shell Pig interativo)
grunt> A = load '/user/toti/textos/passwd' using PigStorage(':');
grunt> B = foreach A generate $0 as id;
grunt> dump B;
Para chamar o shell interativo Grunt> em:
Local Mode
$ pig -x local
... - Connecting to ...
grunt>
Tez Local Mode
$ pig -x tez_local
... - Connecting to ...
grunt>
Spark Local Mode
$ pig -x spark_local
... - Connecting to ...
grunt>
Mapreduce Mode
$ pig -x mapreduce
... - Connecting to ...
grunt>
-- ou
$ pig
... - Connecting to ...
grunt>
Tez Mode
$ pig -x tez
... - Connecting to ...
grunt>
Spark Mode
$ pig -x spark
... - Connecting to ...
grunt>
Batch Mode (Script)
Você pode executar
Pig no modo
batch usando scripts
Pig e o comando "
pig" (no modo
local ou
hadoop).
Exemplo
As instruções
Pig Latin no script
Pig (
id.pig) extraem todos os
IDs de usuário do arquivo
/etc/passwd.
Em seguida, vamos executar o script
Pig na linha de comando (usando o
modo local).
O operador
STORE gravará os resultados em um arquivo (
toti/textos/id.out).
/* id.pig */
A = load 'etc/passwd' using PigStorage(':'); -- carrega o arquivo passwd
B = foreach A generate $0 as id; -- extrai os IDs dos usuários
store B into 'toti/textos/id.out'; -- escreve os resultados no arquivo id.out
Local Mode
$ pig -x local toti/scripts/pig/id.pig
Tez Local Mode
$ pig -x tez_local id.pig
Spark Local Mode
$ pig -x spark_local id.pig
Mapreduce Mode
$ pig id.pig
-- ou
$ pig -x mapreduce id.pig
Pig Scripts
Use scripts
Pig para colocar instruções
Pig Latin e comandos
Pig em um único arquivo.
Embora não seja obrigatório, é recomendável identificar o arquivo usando a extensão
*.pig.
Você pode executar scripts
Pig a partir da linha de comando e do shell
Grunt (veja os comandos
run e
exec).
Scripts
Pig permitem que você passe valores para parâmetros usando a substituição de parâmetros.
Comentários em Scripts
Você pode incluir comentários nos scripts do
Pig:
Para comentários de várias linhas, use
/ *….
* /
Para comentários de linha única use
- -
/* myscript.pig
Meu script é simples. Inclui três comandos Pig Latin.
*/
A = LOAD 'student' USING PigStorage() AS (name:chararray, age:int, gpa:float); -- carrega os dados
B = FOREACH A GENERATE name; -- transforma os dados
DUMP B; -- recupera os resultados
Scripts e sistemas de arquivos distribuídos
Pig suporta a execução de scripts (e arquivos
Jar) que são armazenados no
HDFS,
Amazon S3 e outros sistemas de arquivos distribuídos.
O
URI do local completo do script é necessário.
Por exemplo, para executar um script
Pig no
HDFS, faça o seguinte:
$ pig hdfs://nn.mydomain.com:9020/myscripts/script.pig
Seguimos na próxima aula com o Apache Pig 🐷.
Se gostarem do conteúdo dêem um joinha 👍 na página do Código Fluente no
Facebook
Esse é o link do código fluente no Pinterest
Meus links de afiliados:
Obrigado, até e bons estudos. :)