Tipos de dados de porco do Hadoop e sintaxe
tipos de dados de porco compõem o modelo de dados para saber como Pig pensa da estrutura dos dados que está a processar. Com Pig, o modelo de dados são definidos quando os dados são carregados. Todos os dados que carregar em Pig do disco vai ter um esquema e estrutura particular. Pig precisa entender que a estrutura, de modo que quando você faz o carregamento, os dados vai automaticamente através de um mapeamento.
Felizmente para você, o modelo de dados de porco é rica o suficiente para lidar com quase tudo jogado seu caminho, incluindo mesa- como estruturas e estruturas de dados hierárquicas aninhadas. Em termos gerais, no entanto, os tipos de dados de porco pode ser dividido em duas categorias: tipos escalares e tipos complexos. Escalar tipos conter um único valor, enquanto complexo tipos conter outros tipos, tais como os tipos de tupla, saco e Mapa listados abaixo.
Pig Latin tem esses quatro tipos em seu modelo de dados:
Átomo: A átomo é qualquer valor único, como uma string ou um número - 'Diego', por exemplo. valores atômicos de porco são tipos escalares que aparecem na maioria das linguagens de programação - int, long, float, double, chararray e bytearray, por exemplo.
tuple: UMA tuple é um registro que consiste em uma sequência de campos. Cada campo pode ser de qualquer tipo - 'Diego', 'Gomez', ou 6, por exemplo). Pense em uma tupla como uma linha em uma tabela.
Bolsa: UMA Bolsa é um conjunto de tuplos não-exclusivos. O esquema da bolsa é flexível - cada tupla na coleção pode conter um número arbitrário de campos e cada campo pode ser de qualquer tipo.
Mapa: Um mapa é um conjunto de pares de valores-chave. Qualquer tipo pode ser armazenado no valor, e a chave tem de ser único. A chave de um mapa deve ser um chararray e o valor pode ser de qualquer tipo.
A figura oferece alguns bons exemplos de tipos de dados Tuple, Saco, e mapa, também.
O valor de todos esses tipos também pode ser nulo. A semântica para nula são semelhantes aos utilizados no SQL. O conceito de null em porco significa que o valor é desconhecido. Nulos pode aparecer nos dados em casos onde os valores ilegíveis ou irreconhecível - por exemplo, se você fosse usar um tipo de dados errado na declaração LOAD.
Nulo pode ser usado como um marcador de posição até que os dados são adicionados, ou como um valor de um campo que é opcional.
Pig Latin tem uma sintaxe simples com uma semântica poderosas que você vai usar para realizar duas operações principais: acesso e transformar dados.
Em um contexto Hadoop, acessando dados significa permitindo que os desenvolvedores para carregar, armazenar e dados de fluxo, enquanto transformadora Dados significa tomar vantagem da capacidade do porco para o grupo, juntar, combinar, dividir, filtrar e classificar os dados. A tabela dá uma visão geral dos operadores associados a cada operação.
Operação | Operador | Explicação |
---|---|---|
Data de acesso | LOAD / STORE | Ler e gravar dados para o sistema de arquivos |
DUMP | Escreve a saída para a saída padrão (stdout) | |
CORRENTE | Enviar todos os registros através de binário externo | |
transformações | PARA CADA | Aplicar expressão a cada registro e saída de um ou morerecords |
FILTRO | Aplicar predicado e remover registros que não meetcondition | |
GROUP / COGROUP | registos de agregação com a mesma chave de um ou moreinputs | |
JUNTE-SE | Junte-se a dois ou mais registros com base em uma condição | |
CRUZ | produto cartesiano de duas ou mais entradas | |
ORDEM | Classificar registros com base em chave | |
DISTINCT | Remover registros duplicados | |
UNIÃO | Mesclar dois conjuntos de dados | |
DIVIDIDO | dados dividir em duas ou mais sacos à base de predicado | |
LIMITE | subconjunto do número de registros |
Pig, também fornece alguns operadores que são úteis para depuração e solução de problemas, como mostrado:
Operação | Operador | Descrição |
---|---|---|
Depurar | DESCREVER | Retornar o esquema de uma relação. |
DUMP | Despejar o conteúdo de uma relação para a tela. | |
EXPLICAR | Exibir os planos de execução MapReduce. |
Parte da mudança de paradigma do Hadoop é que você aplicar o seu esquema em Ler em vez de carga. De acordo com a velha maneira de fazer as coisas - a maneira RDBMS - quando você carregar dados em seu sistema de banco de dados, você deve carregá-lo em um conjunto bem definido de tabelas. Hadoop permite armazenar todos os dados de matérias inicial e aplicar o esquema de leitura.
Com Pig, você faz isso durante o carregamento dos dados, com a ajuda do operador LOAD.
A instrução usando opcional define como mapear a estrutura de dados dentro do arquivo para o modelo de dados Pig - neste caso, a estrutura de dados PigStorage (), que analisa arquivos de texto delimitado. (Esta parte da instrução Using é muitas vezes referida como um Func de carga e funciona de forma semelhante a um desserializador personalizada.)
O opcional AS cláusula define um esquema para os dados que está sendo mapeado. Se você não usar uma cláusula AS, você está dizendo basicamente o Func CARGA padrão que esperar um arquivo de texto simples que é delimitado por tabulações. Com nenhum esquema fornecidos, os campos devem ser referenciados por posição, porque nenhum nome for definido.
Usando como cláusulas significa que você tem um esquema no lugar no tempo de ler para seus arquivos de texto, que permite aos usuários começar rapidamente e fornece modelagem esquema ágil e flexibilidade, de modo que você pode adicionar mais dados para sua análise.
O operador de carga funciona com base no princípio de avaliação preguiçosa, também referido como chamada por necessidade. Agora preguiçoso não soa particularmente louvável, mas tudo o que significa é que você atrasar a avaliação de uma expressão até que você realmente precisa dele.
No contexto do exemplo Pig, o que significa que, após a instrução LOAD é executado, nenhum dado é movido - nada é desviado ao redor - até que uma instrução para gravar dados é encontrado. Você pode ter um script de porco que é uma página longa preenchido com transformações complexas, mas nada é executado até que a instrução DUMP ou STORE é encontrado.