Definindo formatos de registros tabela na colmeia

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.

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 de Java pacote e nome da classe para o objeto formato de entrada arquivo 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 separar o seu formato de registro de seu formato de arquivo, assim como exatamente você conseguir 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 está lendo dados 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. Isso iria caracterizar o fluxo de dados para um HiveQL SELECIONAR declaração. Quando Hive está escrevendo dados, um Java Serializer aceita o registro Hive usa e traduz-la de modo que o FORMATO DE SAÍDA classe pode escrevê-lo para o HDFS (ou sistema de arquivos local).

Isso 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 maior número disponível de 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) hivegt; definido hive.cli.print.current.db = true-(C) colmeia (padrão) gt; CREATE DATABASE ourfirstdatabase-OKTime tomadas: 3.756 segundos(D) colmeia (padrão) gt; USO ourfirstdatabase-OKTime tomadas: 0,039 segundos(E) colmeia (ourfirstdatabase) gt; CRIAR our_first_table TABELA (gt; NomePróprio STRING gt; LastNameSTRING, gt; EmployeeId INT) -OKTime feita: 0,043 secondshive (ourfirstdatabase) gt; Sair-(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 clihivegt --service; CREATE DATABASE data_types_db-OKTime tomadas: 0,119 secondshivegt; USAR data_types_db-OKTime tomadas: 0.018 segundos(1)Hivegt; CRIAR data_types_table TABLE ((2) gt; TINYINT our_tinyint COMENTÁRIO `1 byte inteiro assinado`,(3) gt; COMENTÁRIO our_smallintSMALLINT `2 byte inteiro assinado`,(4) gt; our_int INT COMENTÁRIO `4 byte inteiro assinado`,(5) gt; our_bigint BIGINTCOMMENT `8 byte inteiro assinado`,(6) gt; our_float FLOAT COMENTÁRIO `ponto flutuante de precisão única`,(7) gt; our_double DOUBLECOMMENT `ponto flutuante de precisão dupla`,(8) gt; our_decimal DECIMAL COMENTÁRIO `Precise tipo decimal base(9) gt; em Java BigDecimal Object`,(10) gt; our_timestamp TIMESTAMP COMENTÁRIO `AAAA-MM-DD HH: MM: ss.fffffffff"(11) gt; (Precisão lugar 9 decimal)`,(12) gt; our_boolean BOOLEAN COMENTÁRIO `tipo de dados booleano VERDADEIRO ou FALSO`,(13) gt; our_string STRINGCOMMENT `tipo de dados seqüência de caracteres`,(14) gt; our_binary BINARYCOMMENT `Tipo de dados para armazenar arbitrária(15) gt; número de bytes`,(16) gt; ARRAY our_array COMENTÁRIO `A coleção de campos todos(17) gt; o mesmo tipo de dados indexada por(18) gt; um inteiro`,(19) gt; COMENTÁRIO MAP our_map `A coleção de chaves, pares de Valor(20) gt; onde a chave é um Primitive(21) gt; Tipo e o valor pode ser(22) gt; qualquer coisa. Os dados escolhido(23) gt; tipos para as chaves e valores(24) gt; deve permanecer o mesmo por mapa`,(25) gt; our_structSTRUCT(26) gt; COMENTÁRIO `A de dados complexos aninhada(27) gt; estrutura`,(28) gt; our_union UNIONTYPE(29) gt; COMENTÁRIO `um tipo de dados complexo que pode(30) gt; segure um dos seus Dados Possível(31) gt; Tipos de Uma Vez `)(32) gt; `Tabela ilustrando todos os tipos de dados Apache colmeias` COMENTÁRIO(33) gt; ROW formato delimitado(34) gt; FIELDS TERMINATED BY ``(35) gt; Itens de coleção TERMINATED BY `|(36) gt; CHAVES DO MAPA TERMINATED BY `^`(37) gt; LINES TERMINATED BY `n`(38) gt; Armazenado como TextFile(39) gt; 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 Hive 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 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 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 Avro em tabelas Hive.

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


Publicações relacionadas