Tipos de dados 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 fica definido 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 Pig é rico 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 Pig podem ser divididos 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, Mala 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 disco que consiste de 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 é uma coleção de tuplas não-exclusivas. O esquema do saco é flexível - cada tuplo na recolha pode conter um número arbitrário de campos, e cada domínio pode ser de qualquer tipo.
Video: Burros e porcos !
Mapa: Um mapa é um conjunto de pares de valores-chave. Qualquer tipo pode ser armazenado no valor, e a chave precisa ser único. A chave de um mapa deve ser um chararray eo 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 em SQL. O conceito de null em Pig 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.
Nulos pode ser utilizado 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 a 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 transmitir dados, enquanto transformadora Dados significa tomar vantagem da capacidade do porco de 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 em sistema de arquivos |
DUMP | Faça a saída padrão (saída padrão) | |
CORRENTE | Enviar todos os registros através de binário externo | |
transformações | PARA CADA | Aplicar expressão para cada registro e saída de um ou mais registros |
FILTRO | Aplicar predicado e remover registros que não atendam condição | |
GROUP / COGROUP | registros agregados com a mesma chave de um ou mais inputs | |
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 com base no predicado | |
LIMITE | subconjunto do número de registos |
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 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 esses dados brutos iniciais 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 carga e funciona de forma semelhante a um desserializador personalizada.)
Video: Aula de português
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. Sem esquema fornecido, os campos devem ser referenciados por posição, porque nenhum nome for definido.
Utilizando como cláusulas significa que você tem um esquema no lugar em tempo de ler para seus arquivos de texto, que permite aos usuários começar rapidamente e fornece modelagem esquema ágil e flexibilidade para que você possa adicionar mais dados para sua análise.
O operador CARGA opera no princípio da avaliação preguiçosa, também conhecido 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 um comunicado para gravar dados é encontrado. Você pode ter um script porco que é uma página de comprimento cheio de transformações complexas, mas nada é executado até que a instrução DUMP ou STORE é encontrado.