Tuesday 30 April 2019

Hive data types binary options


Eu estou querendo saber se existe alguma maneira de realmente carregar dados CSV em um formato de colméia binário - ou seja, fazendo o mesmo que o carregamento de dados em um banco de dados relacional faria: análise e tipo de conversão de entrada e armazená-lo em um formato binário (em outro binário Arquivo em caso de Hive). A referência Hive diz que o comando load data inpath não faz nenhuma transformação, então eu suspeito que os tipos não são convertidos, p. De string para inteiro. Eu estava lendo sobre os formatos OCR e RCFile, mas não consegui descobrir se, p. Os valores de string do CSV são convertidos em valores inteiros de máquina e armazenados em HDFS. Isso é o caso Quais outras possibilidades existem para criar representações binárias de arquivos CSV no Hive Em uma nota relacionada: Eu suspeito Hive não converter valores de seqüência de caracteres em representações de máquina durante o processamento de consulta e não é, por exemplo. Por padrão, Hive apenas armazena arquivos como arquivos de texto simples e armazena registros como texto sem formatação, todos descompactados. Ele usa ASCII 0x1 para um separador de campo que é mais conveniente do que uma vírgula para algumas entradas, mas tenho certeza que você trabalhou como obter Hive para trabalhar com valores separados por vírgula. Se você quiser Hive para usar um formato de arquivo diferente, serializar / desserializar de forma diferente, ou comprimir os dados que você tem algumas opções diferentes para brincar com. Fora da caixa, Hive suporta vários formatos de arquivo diferentes: TEXTFILE. SEQUENCEFILE. E RCFILE. As diferenças entre têm a ver com como os arquivos são lidos, divididos e escritos. TEXTFILE é o padrão e opera em arquivos de texto normais. SEQUENCEFILE é um formato de par chave-valor binário que é facilmente consumido por outras partes do ecossistema Hadoop. E RCFILE é uma maneira orientada coluna para salvar as tabelas Hive. Além deste formato de arquivo, você pode escrever o seu próprio ou encontrar outras pessoas que escreveram para atender a diferentes necessidades. Além do formato de arquivo em que seus dados foram salvos, você pode decidir como os registros em uma tabela devem ser serializados e desserializados especificando um SerDe. Hive 0.9.1 e acima vem embalado com um AvroSerDe. E Avro salva dados em um formato binário (ele também tem um esquema em si que introduz algumas complicações). Uma pesquisa do Google para o binário Serveur revelou um LazyBinarySerde que soa como uma forma mais simples de salvar em um formato binário. E se você não pode encontrar qualquer coisa para atender às suas necessidades, você sempre pode escrever o seu próprio SerDe. Imagino que a sua pergunta encaixa no contexto de como tornar as mesas de Hive mais pequenas e / ou mais performantes. Para isso, você pode aplicar compressão em cima de tudo o que eu mencionei acima. Para fazer isso, basta dizer ao Hive para compactar sua saída e diga qual codec deve ser compactado usando os seguintes comandos: Você pode alterar isso em seus arquivos de configuração se desejar que essa configuração persista fora da sessão (incluindo outros trabalhos Hive e MapReduce se você Estão compartilhando um cluster). Eu uso SnappyCodec porque ele funciona com Hive fora da caixa, é dividível, e dá boa compressão / descompressão para o tempo de CPU gasto. Você pode decidir que um codec diferente é mais adequado às suas necessidades. Agora, como você aplica todas essas opções se todos os seus dados estão em um formato CSV A maneira mais fácil é criar uma tabela em cima dos arquivos CSV, em seguida, criar outra tabela com o formato de arquivo e SerDe que você deseja e, em seguida, inserir os dados a partir do CSV backed tabela para a nova tabela (certificando-se de que você está compressão sua saída Hive com o seu codec de escolha). Sob o capô, Hive cuidará de ler os dados de um formato (CSV) e escrever para outro (o que você decidiu). Depois disso você terá uma duplicata dos dados e você pode soltar os arquivos CSV, se desejar. O exemplo acima demonstra como você pode aproveitar todas as opções disponíveis para você, mas não pense nisso como um padrão, caso de uso razoável. Leia os diferentes formatos de arquivo / SerDes / codecs de compressão e faça alguns testes de desempenho para resolver sua abordagem.

No comments:

Post a Comment