A Busca de Dados dos Monges

HadoopBeginner
Pratique Agora

Introdução

Nas terras místicas do Oriente, um mosteiro venerado erguia-se no topo de uma montanha imponente, envolto nas névoas da sabedoria ancestral. Dentro de suas paredes sagradas residia um monge-guerreiro reverenciado chamado Hiro, um mestre na arte sagrada da manipulação de dados. Sua dedicação inabalável em desvendar os segredos dos dados lhe rendeu o respeito de estudiosos e monges.

Um dia, o abade do mosteiro convocou Hiro para seus aposentos, com o rosto marcado pela preocupação. "Hiro, uma situação terrível surgiu", começou o abade. "Nossos pergaminhos sagrados, contendo o conhecimento ancestral de nossos antepassados, foram espalhados por todo o reino. Devemos recuperar e organizar essa informação inestimável antes que ela se perca para sempre."

Hiro curvou-se profundamente, seus olhos brilhando com determinação. "Não o decepcionarei, venerável mestre", prometeu. "Com o poder do Hadoop e suas Table Generating Functions (Funções Geradoras de Tabela), vasculharei a terra e restaurarei a ordem à nossa sabedoria ancestral."

O abade assentiu solenemente, depositando sua confiança na determinação inabalável de Hiro. Assim começou a jornada de Hiro para dominar as Table Generating Functions (Funções Geradoras de Tabela) do Hive, uma jornada que testaria suas habilidades e determinação aos seus limites máximos.

Explorando a Função Lateral View

Neste passo, vamos nos aprofundar na poderosa função Lateral View, que nos permite quebrar estruturas de dados complexas em formas mais gerenciáveis.

Primeiro, vamos criar um conjunto de dados de exemplo para trabalhar. Navegue até o diretório /home/hadoop e crie um novo arquivo chamado sample.txt com o seguinte conteúdo:

Mude para o usuário hadoop no terminal usando:

su - hadoop
## Entre no diretório e crie um novo arquivo
cd /home/hadoop
vim sample.txt

Insira o seguinte conteúdo:

1,2,3|4,5|6,7,8
9,10|11,12,13|14,15

Certifique-se de que o arquivo seja salvo e acessível.

Em seguida, criaremos uma tabela Hive para armazenar esses dados. Abra a CLI do Hive executando o seguinte comando no seu terminal:

hive

Dentro da CLI do Hive, execute os seguintes comandos:

CREATE TABLE sample_table (line STRING);
LOAD DATA LOCAL INPATH '/home/hadoop/sample.txt' INTO TABLE sample_table;

Agora, vamos usar a função Lateral View para quebrar os dados de string complexos na coluna line:

SELECT line, x, y
FROM sample_table
LATERAL VIEW OUTER EXPLODE(SPLIT(line, '\\|')) temp AS x
LATERAL VIEW OUTER EXPLODE(SPLIT(x, ',')) temp2 AS y;

A instrução SQL fornecida recupera dados de uma tabela chamada sample_table usando a linguagem de consulta Hive. Aqui está uma explicação simplificada da consulta:

  1. Queremos selecionar três colunas da tabela: line, x e y.

  2. Os dados são recuperados da tabela sample_table.

  3. A consulta usa a cláusula LATERAL VIEW OUTER EXPLODE duas vezes para realizar duas operações separadas:

    • A primeira LATERAL VIEW OUTER EXPLODE(SPLIT(line, '\\|')) temp AS x divide os valores na coluna line usando o delimitador |. A função EXPLODE então transforma a matriz resultante em várias linhas. Esses valores explodidos são atribuídos ao alias x.
    • A segunda LATERAL VIEW OUTER EXPLODE(SPLIT(x, ',')) temp AS y divide os valores na coluna x (que foi criada no passo anterior) usando o delimitador ,. Novamente, a função EXPLODE converte a matriz resultante em várias linhas. Esses valores explodidos são atribuídos ao alias y.

Em resumo, a consulta pega cada linha de sample_table e realiza duas divisões. Primeiro, ela divide a coluna line por |, criando várias linhas com valores diferentes na coluna x. Em seguida, ela divide a coluna x por ,, criando ainda mais linhas com valores diferentes na coluna y. O resultado é um conjunto de linhas com todas as combinações possíveis de valores line, x e y.

Dominando a Função Explode

Neste passo, exploraremos a função Explode, que nos permite transformar tipos de dados complexos, como arrays e mapas, em várias linhas.

Vamos começar criando um novo conjunto de dados de exemplo. Navegue até o diretório /home/hadoop e crie um arquivo chamado array_data.txt com o seguinte conteúdo:

## Entre no diretório e crie um novo arquivo
cd /home/hadoop
vim array_data.txt

Insira o seguinte conteúdo:

[1,2,3],[4,5],[6,7,8,9]
[10,11],[12,13,14],[15]

Em seguida, crie uma tabela Hive para armazenar esses dados:

CREATE TABLE array_table (arr ARRAY<STRING>);
LOAD DATA LOCAL INPATH '/home/hadoop/array_data.txt' INTO TABLE array_table;

Agora, vamos usar a função Explode para achatar os dados do array em linhas individuais:

SELECT explode(arr) AS num FROM array_table;

Esta consulta converterá cada elemento no array arr em uma linha separada, com o valor correspondente na coluna num.

Também podemos usar a função Explode em conjunto com a Lateral View para processar tipos de dados complexos como mapas:

CREATE TABLE map_table (key STRING, value MAP<STRING, INT>);

INSERT INTO map_table
SELECT * FROM (
  SELECT 'entry1' AS key, map('a', 1, 'b', 2, 'c', 3) AS value
  UNION ALL
  SELECT 'entry2' AS key, map('d', 4, 'e', 5) AS value
) AS temp_table;

SELECT key, map_keys, map_values
FROM map_table
LATERAL VIEW EXPLODE(value) temp AS map_keys, map_values;

A instrução SQL fornecida é uma consulta escrita na linguagem de consulta Hive. Aqui está uma explicação da consulta:

  1. SELECT key, map_keys, map_values: Isso especifica as colunas a serem selecionadas no resultado. O resultado incluirá três colunas: key, map_keys e map_values.
  2. FROM map_table: Isso indica que a consulta é executada na tabela map_table.
  3. LATERAL VIEW EXPLODE(value) temp AS map_keys, map_values: Esta é uma visualização lateral que explode a coluna value da map_table. A função EXPLODE é usada para transformar cada par chave-valor na coluna MAP em linhas separadas. Os valores explodidos são atribuídos aos aliases map_keys e map_values.

Em resumo, a consulta recupera dados da tabela map_table. Em seguida, ela usa a cláusula LATERAL VIEW EXPLODE para expandir a coluna value, resultando em linhas separadas para cada par chave-valor na coluna MAP. As linhas resultantes terão a coluna key da map_table, juntamente com as colunas explodidas map_keys e map_values representando as chaves e valores individuais do MAP, respectivamente.

Resumo

Neste laboratório, embarcamos em uma jornada pelos reinos místicos das Funções Geradoras de Tabela do Hive, guiados pela determinação inabalável do monge-guerreiro Hiro. Através da exploração prática, desvendamos o poder das funções Lateral View e Explode, dominando a arte de transformar estruturas de dados complexas em formas mais gerenciáveis.

Ao quebrar dados intrincados em elementos individuais, desvendamos os segredos ocultos, revelando insights inestimáveis e abrindo caminho para uma compreensão mais profunda. Assim como a busca de Hiro reuniu os pergaminhos dispersos da sabedoria antiga, nosso domínio dessas funções poderosas nos capacitou a organizar e analisar dados de maneiras antes consideradas impossíveis.

Este laboratório não apenas fortaleceu nossas habilidades técnicas, mas também nos incutiu uma profunda apreciação pelo legado duradouro da manipulação de dados. À medida que continuamos nossa jornada, que as lições aprendidas aqui sirvam como uma luz orientadora, iluminando nosso caminho em direção a um domínio cada vez maior das artes de dados.