Definindo tabela de registro Formatos em Hive

A tecnologia Java que Hive usa para processar registros e mapeá-los para tipos de dados de coluna em tabelas Hive é chamado SerDe, que é curto para Serializerdeserializer. A figura ilustra como SerDes são alavancados e ele vai ajudar você a entender como Hive mantém formatos de arquivo separado de formatos de discos.

image0.jpg

Então, a primeira coisa a notar é a FORMATO DE ENTRADA objeto. FORMATO DE ENTRADA permite especificar sua própria classe Java você deve querer Hive para ler a partir de um formato de arquivo diferente. Armazenado como TextFile é mais fácil do que escrever INPUTFORMAT org.apache.hadoop.mapred.TextInputFormat - toda a árvore Java pacote eo nome da classe para o objeto de formato de arquivo de entrada de texto padrão, em outras palavras.

O mesmo é verdade para o FORMATO DE SAÍDA objeto. Em vez de escrever para fora toda a árvore de pacotes e classe nome Java, o Armazenado como TextFile declaração cuida de tudo isso para você.

Hive permite que você separe o seu formato de registro de seu formato de arquivo, assim como exatamente você fazer isso? Simples, você quer substituir Armazenado como TextFile com algo como Armazenado como RCFILE, ou você pode criar sua própria classe Java e especificar as classes de entrada e saída usando INPUTFORMAT packagepath.classname e packagepath.classname OutputFormat.

Finalmente notar que quando Hive é a leitura de dados a partir do HDFS (ou sistema de arquivos local), um Java Deserializer formata os dados em um registro que mapeia para os tipos de dados da coluna da tabela. Isto iria caracterizar o fluxo de dados para um HiveQL SELECIONAR declaração. Quando Hive está a gravar dados, um Java Serializer aceita o registro Hive utiliza e converte-lo de modo que a FORMATO DE SAÍDA classe pode escrevê-lo para o HDFS (ou sistema de arquivos local).

Isto iria caracterizar o fluxo de dados para um HiveQL CRIAR-TABLE-AS SELECT declaração. Então o FORMATO DE ENTRADA, FORMATO DE SAÍDA e objetos SerDe permitir Hive para separar o formato de registro da tabela do formato de arquivo da tabela.

Hive agrupa uma série de SerDes para você escolher, e você vai encontrar um número maior disponibilizados por terceiros, se você pesquisar online. Você também pode desenvolver seus próprios SerDes se você tem um tipo de dados mais incomum que você deseja gerenciar com uma mesa Hive. (Possíveis exemplos aqui são dados de vídeo e dados de e-mail.)

Na lista a seguir, alguns dos SerDes fornecidos com Hive são descritos, bem como uma opção de terceiros que você pode achar útil.

  • LazySimpleSerDe: O SerDe padrão que é usado com o ARQUIVO DE TEXTO format- seria usado com our_first_table a partir da seguinte lista.

    (UMA) $ $ HIVE_HOME / bin colmeia --service cli(B) colmeia> set hive.cli.print.current.db = verdade-(C) colmeia (padrão)> CREATE DATABASE ourfirstdatabase-OKTime tomadas: 3.756 segundos(D) colmeia (padrão)> USE ourfirstdatabase-OKTime tomadas: 0,039 segundos(E) colmeia (ourfirstdatabase)> CREATE TABLE our_first_table (> FirstName STRING,> LastNameSTRING,> EmployeeId INT) -OKTime tomadas: 0,043 secondshive (ourfirstdatabase)> quit-(F) $ Ls /home/biadmin/Hive/warehouse/ourfirstdatabase.dbour_first_table

    Seria também ser usado com data_types_table a partir da seguinte lista.

    $ ./hive --service Clihive> CREATE DATABASE data_types_db-OKTime realizada: 0,119 secondshive> USE data_types_db-OKTime tomadas: 0.018 segundos(1)Hive> CREATE TABLE data_types_table ((2) > Our_tinyint TINYINT COMENTÁRIO "1 byte inteiro assinado ',(3) > Our_smallintSMALLINT COMENTÁRIO '2 byte inteiro assinado',(4) > Our_int INT COMENTÁRIO 'de 4 bytes assinado número inteiro',(5) > Our_bigint BIGINTCOMMENT '8 byte inteiro assinado',(6) > Our_float FLOAT COMENTÁRIO 'precisão simples de ponto flutuante',(7) > DOUBLECOMMENT our_double 'precisão dupla de ponto flutuante',(8) > Our_decimal COMENTÁRIO DECIMAL "Precise tipo decimal base(9) > Em Java BigDecimal Object ',(10) > Our_timestamp TIMESTAMP COMENTÁRIO 'AAAA-MM-DD HH: MM: ss.fffffffff "(11) > (Local de precisão 9 decimal) ',(12) > Our_boolean BOOLEAN COMENTÁRIO 'tipo de dados booleano VERDADEIRO ou FALSO',(13) > Our_string STRINGCOMMENT 'tipo de dados seqüência de caracteres',(14) > BINARYCOMMENT our_binary 'Tipo de dados para armazenar arbitrária(15) > Número de bytes ',(16) > Array our_array COMENTÁRIO "Uma coleção de todos os campos de(17) > O mesmo tipo de dados indexados pelo(18) > Um inteiro ',(19) > Our_map MAP COMENTÁRIO "Uma coleção de chaves, pares de Valor(20) > Em que a chave é um Primitive(21) > Tipo e o valor pode ser(22) > Nada. Os dados escolhidos(23) > tipos para as chaves e valores(24) > Deve permanecer o mesmo por mapa ',(25) > our_structSTRUCT(26) > COMENTÁRIO 'A de dados complexos aninhados(27) > Estrutura ",(28) > UNIONTYPE our_union(29) > COMENTÁRIO 'um tipo de dados complexo que pode(30) > Realizar Um dos seus Dados Possível(31) > Tipos de uma vez ')(32) > COMENTÁRIO 'Table ilustrando todos os tipos de dados Apache Hive'(33) > ROW formato delimitado(34) > FIELDS TERMINATED BY ','(35) > itens Coleção terminado por '|'(36) > chaves de mapa terminado por '^'(37) > LINES TERMINATED BY ' n'(38) > Armazenado como TextFile(39) > TBLPROPERTIES ( 'criador' = 'Bruce Brown', 'created_at' = 'Sat 21 set 20:46:32 EDT 2013 ") - OKTime tomadas: 0,886 segundos
  • ColumnarSerDe: Usado com o RCFILE formato.

  • RegexSerDe: O SerDe expressão regular, que acompanha o Hive para permitir a análise de arquivos de texto, RegexSerDe pode formar uma abordagem poderosa para a construção de dados estruturados em tabelas colmeia de blogs não estruturados, arquivos de log semi-estruturados, e-mails, tweets e outros dados de mídia social. As expressões regulares permitem que você para extrair informações significativas (um endereço de e-mail, por exemplo) com HiveQL a partir de um documento de texto não estruturados ou semi-estruturados incompatível com SQL tradicional e RDBMSs.

  • HBaseSerDe: Incluído com Hive para lhe permite integrar com HBase. Você pode armazenar as tabelas colméia em HBase, aproveitando esta SerDe.

  • JSONSerDe: A SerDe de terceiros para ler e escrever os registros de dados JSON com Hive. Você pode encontrar rapidamente (via Google e GitHub) dois JSON SerDes através de pesquisa on-line para a frase serde JSON para colmeia.

  • AvroSerDe: Incluído com Hive para que você possa ler e gravar dados em tabelas Avro colmeia.

revendo o Manual de linguagem DDL pode ser muito útil antes de começar a criar suas tabelas.

menu