Hive ETL: carregando JSON, XML, exemplos de dados de texto

⚡ Resumo Inteligente

O Hive ETL transforma arquivos de texto, XML e JSON em tabelas consultáveis, carregando-os no Hive e executando-os.tracA manipulação de valores com xpath() e get_json_object() proporciona aos analistas uma interface SQL sobre dados Hadoop semiestruturados.

  • 🧱 Cargas estruturadas: Um arquivo de texto delimitado se transforma em uma tabela com ROW FORMAT DELIMITED mais FIELDS TERMINATED BY, e então LOAD DATA LOCAL INPATH.
  • 🏷️ XML extracção: Uma única coluna STRING armazena cada documento XML, e a função xpath() extrai os valores das tags nomeadas.
  • 🔑 JSON extracção: A função get_json_object() lê uma expressão JSONPath por chamada, portanto, cada campo precisa de sua própria chamada.
  • 🪜 Cargas úteis aninhadas: O JSON complexo é carregado exatamente da mesma maneira, e a hierarquia é percorrida com expressões JSONPath pontilhadas.
  • 📍 Regras do percurso: A palavra-chave LOCAL lê do sistema de arquivos Linux, enquanto omiti-la resolve o caminho no HDFS.
  • 🎯 Onde se encaixa: O Hive é mais adequado para armazenamento em lote e ETL semiestruturado do que para pesquisas de registros de baixa latência.

Hive ETL: Carregando dados JSON, XML e de texto

Hive como ferramenta de ETL e armazenamento de dados sobre o Hadoop O ecossistema fornece funcionalidades como modelagem de dados, manipulação de dados, processamento de dados e consulta de dados. Exemplo de dadostracA indexação no Hive significa a criação de tabelas no Hive e o carregamento de dados estruturados e semiestruturados, bem como a consulta de dados com base nos requisitos.

Para processamento em lote, vamos escrever scripts personalizados usando scripts de mapeamento e redução personalizados em uma linguagem de script. Isso fornece um SQL como ambiente e suporte para consultas fáceis.

Trabalhando com dados estruturados usando Hive

Dados estruturados significam que os dados estão no formato adequado de linhas e colunas. Isso é mais parecido com... RDBMS dados com linhas e colunas adequadas.

Aqui, vamos carregar dados estruturados presentes em arquivos de texto no Hive.

Passo 1) Nesta etapa estamos criando a tabela “employees_guru” com nomes de colunas como Id, Nome, Idade, Endereço, Salário e Departamento dos funcionários com tipos de dados.

Criando a tabela employees_guru e carregando o arquivo Employees.txt no Hive.

A partir da captura de tela acima, podemos observar o seguinte:

  1. Criação da tabela “employees_guru”
  2. Carregando dados do arquivo Employees.txt na tabela “employees_guru”

Passo 2) Nesta etapa, estamos exibindo o conteúdo armazenado nesta tabela usando o comando "Selecionar". Podemos observar o conteúdo da tabela na captura de tela a seguir.

Saída da consulta Select mostrando as linhas da tabela employees_guru do Hive.

Trecho de código de exemplo

Consultas a serem realizadas

1) Create table employees_guru(Id INT, Name STRING, Age INT, Address STRING, Salary FLOAT, Department STRING)
> Row format delimited
> Fields terminated by ',';
2) load data local inpath '/home/hduser/Employees.txt' into TABLE employees_guru;
3) select * from employees_guru;

Trabalhando com dados semiestruturados usando Hive (XML, JSON)

O Hive executa funcionalidades de ETL no ecossistema Hadoop atuando como um... Ferramenta ETLA implementação do MapReduce pode ser complexa em alguns tipos de aplicações; o Hive reduz essa complexidade e oferece a melhor solução para aplicações de TI no setor de armazenamento de dados.

Dados semiestruturados, como XML e JSON, podem ser processados ​​com menos complexidade usando o Hive. Primeiro, veremos como podemos usar o Hive para... XML.

XML para tabela Hive

Neste, carregaremos dados XML nas tabelas Hive e buscaremos os valores armazenados dentro das tags XML.

Passo 1) Criação da tabela “xmlsample_guru” com uma coluna str do tipo de dados string.

Criando a tabela xmlsample_guru e carregando o arquivo test.xml no Hive.

A partir da captura de tela acima, podemos observar o seguinte:

  1. Criação da tabela “xmlsample_guru”
  2. Carregando dados do arquivo test.xml na tabela “xmlsample_guru”

Passo 2) Com o XPath Com o método xpath(), poderemos obter os dados armazenados dentro das tags XML.

Consulta xpath() retornando os valores ename e esal da coluna XML.

A partir da captura de tela acima, podemos observar o seguinte:

  1. Utilizando o método xpath(), estamos buscando os valores armazenados em /emp/esal/ e /emp/ename/.
  2. Valores presentes dentro das tags XML. Nesta etapa, estamos exibindo os valores reais armazenados sob as tags XML na tabela “xmlsample_guru”.

Note que xpath() retorna uma matriz de strings; xpath_string(), xpath_int() e xpath_double() retornam um único valor tipado.

Passo 3) Nesta etapa, iremos obter e exibir o XML bruto da tabela “xmlsample_guru”.

Documentos XML brutos armazenados na coluna str de xmlsample_guru

A partir da captura de tela acima, podemos observar o seguinte:

  • Os dados XML reais exibidos com tags
  • Se observarmos uma única tag, ela terá “emp” como tag principal e “ename” e “esal” como tags filhas.

Code trecho:

Consultas a serem realizadas

1) create table xmlsample_guru(str string);                                                                                                   2) load data local inpath '/home/hduser/test.xml' overwrite  into table xmlsample_guru;
3) select xpath(str,'emp/ename/text()'), xpath(str,'emp/esal/text()') from xmlsample_guru;

JSON (JavaNotação de Objeto de Script)

Os dados de redes sociais e sites são geralmente armazenados em formato JSON. Sempre que tentamos obter dados de servidores online, eles retornam arquivos JSON. Usando o Hive como banco de dados, podemos carregar dados JSON em tabelas do Hive criando esquemas.

JSON para tabela Hive

Neste tutorial, vamos carregar dados JSON em tabelas do Hive e recuperar os valores armazenados no esquema JSON.

Passo 1) Nesta etapa, vamos criar uma tabela JSON chamada “json_guru”. Depois de criada, carregamos e exibimos o conteúdo do esquema propriamente dito.

Criando json_guru, carregando test.json e exibindo o esquema JSON.

A partir da captura de tela acima, podemos observar o seguinte:

  1. Criação da tabela “json_guru”
  2. Carregando dados do arquivo test.json na tabela “json_guru”
  3. Exibindo o esquema real do arquivo JSON armazenado na tabela json_guru.

Passo 2) Utilizando o método get_json_object(), podemos obter os valores de dados armazenados na hierarquia JSON.

A função `get_json_object()` gera um objeto listando os valores de ecode, ename e salary do json_guru.

A partir da captura de tela acima, podemos observar o seguinte:

  1. Usando `get_json_object(str,'$.ecode')`, é possível obter os valores de `ecode` da tabela `json_guru`. Da mesma forma, usando `get_json_object(str,'$.ename')` e `get_json_object(str,'$.sal')`, serão obtidos os valores de `ename` e `sal` da tabela `json_guru`.
  2. Valores armazenados dentro da hierarquia JSON em json_guru

Como get_json_object() analisa o documento uma vez por chamada, json_tuple() é mais eficiente quando várias chaves são necessárias, e um JSON SerDe mapeia o documento em colunas tipadas no momento do carregamento.

Code fragmento

Consultas a serem realizadas

1) create table json_guru(str string);
2) load data inpath 'home/hduser/test.json' into table json_guru;
3) select * from json_guru;
4) select get_json_object(str,'$.ecode') as ecode, get_json_object(str,'$.ename') as ename ,get_json_object(str,'$.sal') as salary from json_guru;

JSON complexo para tabela Hive

Neste tutorial, vamos carregar dados JSON complexos em tabelas do Hive e recuperar os valores armazenados no esquema JSON.

Passo 1) Criando complexjson_guru com um campo de coluna única.

Criando complexjson_guru e carregando emp.json na tabela Hive.

A partir da captura de tela acima, podemos observar o seguinte:

  1. Criação da tabela complexjson_guru com um único campo de coluna do tipo de dados string.
  2. Carregando dados do arquivo JSON complexo emp.json no complexjson_guru

Passo 2) Ao usar a função `get_json_object`, podemos recuperar o conteúdo real armazenado na hierarquia do arquivo JSON.

Na captura de tela a seguir, podemos ver a saída dos dados armazenados em complexjson_guru.

Extracted ecode e valores de chave aninhados do documento JSON complexo

Passo 3) Nesta etapa, utilizando o comando “Select”, conseguimos visualizar os dados JSON complexos armazenados na tabela “complexjson_guru”.

Selecione a saída que mostra as linhas JSON complexas brutas em complexjson_guru.

Trecho de código de exemplo

Consultas a serem realizadas

1) create table complexjson_guru(json string);
2) load data inpath 'home/hduser/emp.json' into table complexjson_guru;
3) select get_json_object(json,'$.ecode') as ecode ,get_json_object(json,'$.b') as code, get_json_object(json,'$.c') from complexjson_guru;
4) select * from complexjson_guru;

Hive em projetos em tempo real – Quando e onde usar

Quando e onde usar o Hive no ecossistema Hadoop:

Ao

  • Ao trabalhar com funções estatísticas robustas e poderosas no ecossistema Hadoop, é importante considerar os desafios inerentes ao ecossistema Hadoop.
  • Ao trabalhar com processamento de dados estruturados e semiestruturados
  • Como ferramenta de data warehouse com Hadoop
  • Ingestão de dados em tempo real com HBase, onde o Hive pode ser utilizado.

Onde

  • Para facilitar o uso como ferramenta de ETL e armazenamento de dados.
  • Para fornecer um ambiente do tipo SQL e realizar consultas semelhantes a SQL usando HiveQL.
  • Utilizar e implementar scripts de mapa e redutor personalizados para atender a requisitos específicos do cliente.

Perguntas Frequentes

O parâmetro LOCAL copia o arquivo do sistema de arquivos da máquina cliente. Sem o parâmetro LOCAL, o Hive trata o caminho como HDFS e move o arquivo, de forma que um caminho relativo seja resolvido no diretório HDFS do usuário.

A função `json_tuple()` geralmente é mais rápida: ela analisa o documento uma única vez e retorna várias chaves juntas, enquanto a função `get_json_object()` analisa novamente a string para cada campo. Use `get_json_object()` para obter um único valor.

Não. Uma única coluna STRING mais as funções JSON funcionam. Um SerDe como org.apache.hive.hcatalog.data.JsonSerDe é adequado para consultas repetidas em produção, mapeamentoping As chaves são inseridas nas colunas digitadas apenas uma vez, em vez de a cada leitura.

Geralmente, trata-se de um arquivo formatado corretamente: o Hive espera um documento JSON completo por linha, portanto, um documento dividido em várias linhas resulta em linhas inválidas. Uma chave com erro de digitação ou um erro de maiúsculas e minúsculas no JSONPath também causa o mesmo problema.

A função xpath() sempre retorna uma matriz de strings. Em vez disso, utilize uma variante tipada: xpath_string(), xpath_int(), xpath_long(), xpath_float(), xpath_double() ou xpath_boolean(). Cada uma delas retorna um escalar desse tipo.

O armazenamento externo é mais seguro para dados brutos de pouso, porque a quedaping A tabela mantém os arquivos no local. Uma tabela gerenciada exclui seu diretório de dados ao usar o comando DROP — conveniente para tabelas temporárias, mas destrutivo para arquivos compartilhados.

As ferramentas de aprendizado de máquina analisam arquivos de amostra para inferir tipos, sinalizar chaves esparsas e sugerir colunas de partição a partir de padrões de consulta. Considere a saída como um rascunho — os tipos e partições ainda precisam ser verificados em relação aos volumes reais.

Ele cria instruções CREATE TABLE, comandos LOAD DATA e expressões JSONPath a partir de um registro de exemplo colado no editor. Como não consegue visualizar o cluster, é necessário verificar primeiro os nomes, caminhos e grafias das chaves.

Resuma esta postagem com: