Tradutor de Pig Latin

558 visualizações

Publicada em

Etapas de desenvolvimento de um tradutor da linguagem de manipulação de dados Pig Latin. (Análise Léxica)

0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
558
No SlideShare
0
A partir de incorporações
0
Número de incorporações
5
Ações
Compartilhamentos
0
Downloads
3
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Tradutor de Pig Latin

  1. 1. Etapas do processo dedesenvolvimento dotradutor de Pig Latin Elen Arantza Regina Mares
  2. 2. -1-Definição da linguagem de programação
  3. 3. 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.
  4. 4. 1. Definição da linguagem de programação 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. • Projeto open-source:
  5. 5. -2-Especificação informal dalinguagem de programação
  6. 6. 2. Especificação informal dalinguagem 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
  7. 7. 2. Especificação informal dalinguagem de programação • Tipos de dados: Simples e complexos Tipos de dados simples Descrição Exemplo Scalars int Inteiro de 32-bit 10 long Inteiro de 64-bit Data: 10L or 10l Display: 10L float Ponto flutuante de 32-bit Data: 10.5F or 10.5f or 10.5e2f or 10.5E2F Display: 10.5F or 1050.0F double Ponto flutuante de 64-bit Data: 10.5 or 10.5e2 or 10.5E2 Display: 10.5 or 1050.0 Arrays chararray Matriz de caracteres hello world (string) em formato Unicode UTF-8 bytearray Array de bytes (blob) Tipos de dados complexos tuple Um conjunto ordenado de (19,2) campos bag Uma coleção de tuplas {(19,2), (18,1)} (registros) map Um conjunto de pares de [open#apache] valores chave.
  8. 8. 2. Especificação informal dalinguagem de programação • Operadores aritméticosOperação Símbol Observação oAdiçã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.
  9. 9. 2. Especificação informal dalinguagem de programação • Operadores booleanosOperadores SímboloAND eOR ouNOT negação
  10. 10. 2. Especificação informal dalinguagem de programação • Operadores de comparação Comparação Símbolo Igual == Não é igual != Menor que < Maior que > Menor ou igual a <= Maior ou igual a >= Combinação de matches padrões
  11. 11. 2. Especificação informal dalinguagem de programação • Operadores nulos Operador Símbolo É nulo is null Não é nulo is not null
  12. 12. 2. Especificação informal dalinguagem de programação • Operadores relacionais Operador 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.
  13. 13. 2. Especificação informal dalinguagem 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‘; Saída: 002BB5A52580A8ED 18 005BD9CD3AC6BB38 18 00A08A54CD03EB95 3 011ACA65C2BF70B2 5 01500FAFE317B7C0 15 0158F8ACC570947D 3 018FBF6BFB213E68 1
  14. 14. -3-Especificação formal dalinguagem de programação
  15. 15. 3. Especificação formal dalinguagem 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)*
  16. 16. 3. Especificação formal dalinguagem de programação AFD:
  17. 17. -4-Especificação do fluxograma deexecução (Análise léxica)
  18. 18. Inicio Fim Ler todos caracteres do Simcomando/linha Nã Fim de o fita? Ler símbolo Dicionário Sim Gerar token ? Nã o AFD? Sim Tabela de símbolos Nã oTratamento de erros log = LOAD excite-small.log AS (user:chararray, time:long, query:chararray);
  19. 19. -5-Especificação do processo deanálise léxica (Teste de mesa)
  20. 20. 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;
  21. 21. - Referências• Yahoo! Research:http://research.yahoo.com/project/90 -• Apache Pig:http://pig.apache.org/

×