tradutor de pig latin
Post on 29-Jun-2015
373 Views
Preview:
DESCRIPTION
TRANSCRIPT
Etapas do processo de desenvolvimento do
tradutor de Pig Latin
Elen Arantza
Regina Mares
Definição da linguagem de programação
-1-
1. Definição da linguagem de programação
Pig é um projeto de pesquisa do grupo Yahoo!, criado com o objetivo de desenvolver uma infraestrutura para suportar a análise de
grandes conjuntos de dados.
A mais alta camada de abstração no Pig é a
linguagem de consulta chamada Pig Latin, pela qual os usuários expressam as tarefas de
análise de dados, como consultas no estilo SQL ou álgebra relacional.
1. Definição da linguagem de programação
• Projeto open-source:
Especificação informal da linguagem de programação
-2-
2. Especificação informal da linguagem de programação
• Palavras-chave:
and any all as bag by chararray CONCAT COUNT cross load
define distinct double
explain filter foreach
generate group illustrate SUM
2. Especificação informal da linguagem de programação
• Tipos de dados: Simples e complexosTipos de dados simples Descrição Exemplo
Scalars
int Inteiro de 32-bit 10
long Inteiro de 64-bit Data: 10L or 10lDisplay: 10L
float Ponto flutuante de 32-bit Data: 10.5F or 10.5f or 10.5e2f or 10.5E2FDisplay: 10.5F or 1050.0F
double Ponto flutuante de 64-bit Data: 10.5 or 10.5e2 or 10.5E2Display: 10.5 or 1050.0
Arrays
chararray Matriz de caracteres (string) em formato Unicode UTF-8
hello world
bytearray Array de bytes (blob)
Tipos de dados complexos
tuple Um conjunto ordenado de campos
(19,2)
bag Uma coleção de tuplas (registros)
{(19,2), (18,1)}
map Um conjunto de pares de valores chave.
[open#apache]
2. Especificação informal da linguagem de programação
• Operadores aritméticos
Operação Símbolo
Observação
Adição +
Subtração -
Multiplicação *
Divisão /
Módulo % Retorna o resto divido por b (a%b).
Bicondicional ? : (condição ? valor_se_verdadeiro : valor_se_falso)Bicondicional deve ser colocado entre parênteses.
2. Especificação informal da linguagem de programação
• Operadores booleanos
Operadores Símbolo
AND e
OR ou
NOT negação
2. Especificação informal da linguagem de programação
• Operadores de comparação
Comparação SímboloIgual ==Não é igual !=Menor que <Maior que >Menor ou igual a <=Maior ou igual a >=Combinação de padrões
matches
2. Especificação informal da linguagem de programação
• Operadores nulos
Operador Símbolo
É nulo is nullNão é nulo is not null
2. Especificação informal da linguagem de programação
• Operadores relacionaisOperador Descrição
COGROUP GROUP e COGROUP são idênticos. Ambos trabalham com uma ou mais relações.
CROSS Calcula o produto cruzado de duas ou mais relações.
DEFINE
DISTINCT Remove tuplas duplicadas em uma relação.
FILTER Seleciona tuplas de uma relação baseada em alguma condição.
FOREACH Gera transformações de dados baseadas em colunas de dados.
GROUP Agrupa os dados em uma ou mais relações.
IMPORT
JOIN (inner) Executa uma junção interna de duas ou mais relações baseadas em valores de campo comuns.
JOIN (outer) Executa uma junção externa de duas ou mais relações com base em valores de campo comuns.
LIMIT Limita o número de tuplas na saída.
LOAD Carrega dados do sistema de arquivos.
MAPREDUCE Executa tarefas nativas Map-reduce dentro de um script de Pig
ORDER BY Classifica uma relação baseada de um ou mais campos.
SAMPLE Divide uma relação em duas ou mais relações.
SPLIT Divide uma relação em duas ou mais relações.
STORE Armazena ou salva os resultados para o sistema de arquivos.
STREAM Envia dados para um script externo ou programa.
UNION Calcula a união de duas ou mais relações.
2. Especificação informal da linguagem de programação
• Programa exemplo:
log = LOAD 'excite-small.log' AS (user, time, query);grpd = GROUP log BY user;cntd = FOREACH grpd GENERATE group, COUNT(log);STORE cntd INTO 'output‘;
002BB5A52580A8ED 18005BD9CD3AC6BB38 1800A08A54CD03EB95 3011ACA65C2BF70B2 501500FAFE317B7C0 150158F8ACC570947D 3018FBF6BFB213E68 1
Saída:
Especificação formal da linguagem de programação
-3-
3. Especificação formal da linguagem de programação
Dicionário:
Variáveis:-Identificador de posição: -Identificador: L (L + D)* (_ (L + D)*)*-Constantes: D (D)*-Seqüência de caracteres: ‘ (L + D + B + C)* ’-Comentários: -- (L + D + B + C)*
3. Especificação formal da linguagem de programação
AFD:
Especificação do fluxograma de execução (Análise léxica)
-4-
Inicio
Ler todos caracteres do
comando/linha
Ler símbolo
Dicionário?
AFD?
Tratamento de erros
Não
Tabela de símbolos
Sim
Gerar token
Não
Sim
Fim de fita?
Não
Fim
Sim
log = LOAD 'excite-small.log' AS (user:chararray, time:long, query:chararray);
Especificação do processo de análise léxica (Teste de mesa)
-5-
Exemplo de manipulação de dados
>> log = LOAD 'excite-small.log' AS (user:chararray, time:long, query:chararray);>> grpd = GROUP log BY user;>> cntd = FOREACH grpd GENERATE group, COUNT(log);>> STORE cntd INTO 'output‘;
002BB5A52580A8ED 18005BD9CD3AC6BB38 1800A08A54CD03EB95 3011ACA65C2BF70B2 501500FAFE317B7C0 150158F8ACC570947D 3018FBF6BFB213E68 1
>>
SELECT user, COUNT(*) FROM excite-small.log GROUP BY user;
• Yahoo! Research: http://research.yahoo.com/project/90
• Apache Pig:http://pig.apache.org/
-Referências-
top related