Consultas Hive | 15 Consultas básicas do Hive para engenheiros de dados

Conteúdo

Visão geral

  • Conhecer 15 consultas básicas de colméia, incluindo-
    • Seleções simples: seleção de coluna
    • Seleções simples: seleção de linha
    • Criação de novas colunas
    • Características do Hive
  • Esta lista não é exaustiva.. Sinta-se à vontade para adicionar mais na seção de comentários.

Introdução

consultas de colmeia apache

Com consultas do Apache Hive, pode consultar o armazenamento de dados distribuídos, incluindo dados Hadoop.

O Hive é compatível com ANSI SQL e transações atômicas, consistente, isolado e durável (ÁCIDO). Para atualizar os dados, você pode usar a instrução MERGE, que agora também atende aos padrões ACID. Visualizações materializadas otimizam consultas com base em padrões de acesso. O Hive suporta tabelas até 300 PB em formato de coluna de linha otimizado (ORC). Além disso, outros formatos de arquivo são suportados.

Você pode criar tabelas que se parecem com um banco de dados relacional tradicional. Use instruções de inserção reconhecidas, melhoria, Soltar e unir SQL para consultar os dados da tabela.

A instrução Insert grava dados em tabelas. As instruções de atualização e exclusão modificam e excluem valores já gravados no Hive. Declaração de combinação simplifica as atualizações, remover e alterar as operações de captura de dados com base em tabelas coexistentes.

Estas instruções suportam confirmação automática que trata cada instrução como uma transação separada e a confirma após a execução da instrução SQL. Neste post, vamos cobrir algumas consultas e funções básicas do Hive que lhe darão uma compreensão básica de como executar consultas do Hive em dados distribuídos.

Tabela de conteúdo:

  • Seleções simples: seleção de coluna
  • Seleções simples: seleção de linha
  • Criação de novas colunas
  • Características do Hive
    • Funções simples
    • Agregações
    • Funções de data

Seleções simples: seleção de coluna

Uma colmeia, a consulta de dados é feita por meio de uma instrução SELECT. Uma declaração selecionada tem 6 componentes chave;

  • SELECIONE os nomes das colunas
  • FROM nome-da-tabela
  • Nomes de coluna GROUP BY
  • ONDE condições
  • TENDO condições
  • CLASSIFICAR por nomes de coluna

Na prática, muito poucas consultas terão todas essas cláusulas, o que simplifica muitas consultas. Por outro lado, condições na cláusula WHERE podem ser muito complexas e se você precisar juntar duas ou mais tabelas, mais cláusulas são necessárias (JUNTE-SE AO).

Todos os nomes nas cláusulas acima foram capitalizados para clareza. HQL não é sensível a casos. também não é necessário escrever cada cláusula em uma nova linha, mas muitas vezes é mais claro para fazê-lo para todos, mas as consultas mais simples.

Nesta lição, vamos começar com o muito simples e vamos avançar para o mais complexo.

Seleções simples: seleção de coluna

Entre todas as consultas de Colmeia, a consulta mais simples é efetivamente a que retorna o conteúdo de toda a tabela.

SELECIONE *
DE geog_all;
CRIAR EXIBIÇÃO [SE NÃO EXISTE] [db_name.]view_name [(nome da coluna [COMENTÁRIO column_comment], ...)  ]

É melhor praticar e, em geral, mais eficiente para listar explicitamente os nomes da coluna que você quer devolvido.

SELECIONE anonid, tipos de combustível, acorn_type
FROM geog_all;

Seleções simples: seleção de linha

Ao mesmo tempo, limitando as colunas devolvidas por uma consulta, você também pode limitar as linhas devolvidas. O caso mais simples colocou de outra forma quantas linhas você quer usando a cláusula Limite.

SELECIONE anonid, tipos de combustível, acorn_type
FROM geog_all
LIMIT 10;

Isso é útil se você quiser apenas ter uma ideia de como os dados se parecem.. Em geral, você quer restringir as linhas retornadas com base em alguns critérios. Em outras palavras, certos valores ou intervalos dentro de uma ou mais colunas.

SELECIONE anonid, tipos de combustível, acorn_type
FROM geog_all
WHERE fueltypes = "ElecOnly";

a expressão na cláusula onde pode ser mais complexo e incluir mais de uma coluna.

SELECIONE anonid, tipos de combustível, acorn_type
FROM geog_all
WHERE fueltypes = "ElecOnly" E acorn_type > 42;

SELECIONE anonid, tipos de combustível, acorn_type
FROM geog_all
WHERE fueltypes = "ElecOnly" E acorn_type > 42 E nozes1 <> "--";

note que as colunas usadas nas condições da cláusula onde não têm que aparecer na cláusula seleção. Além disso, outros operadores podem ser usados na cláusula de onde. Para expressões complexas, suportes podem ser usados para impor precedência.

SELECIONE anonid, tipos de combustível, acorn_type, nozes1, ldz
FROM geog_all
WHERE
fueltypes = "ElecOnly"
E acorn_type ENTRE 42 E 47
E (nozes1 NÃO EM ("Reino Unido", "UKI") OR ldz = "--");

Criação de novas colunas

é viável criar novas colunas na saída de consulta. Estas colunas podem vir de combinações de outras colunas que usam operadores e / ou características de colmeia incorporada.

SELECIONE anonid, eprofileclass, acorn_type, (eprofileclass * acorn_type) As multipliquem, (eprofileclass + acorn_type) AS added
FROM edrp_geography_data b;

Uma lista completa de operadores e funções disponíveis dentro da Colmeia pode ser encontrada no documentação.

Quando você cria uma nova coluna, é comum fornecer um 'alias’ para a coluna. este é essencialmente o nome que você quer dar a nova coluna. O alias é fornecido imediatamente após a expressão a que se refere. Opcionalmente, você pode adicionar a palavra-chave AS para maior clareza. Se você não fornecer um alias para suas novas colunas, O Hive irá gerar um nome para você.

Mesmo que o termo alias possa parecer um pouco estranho para uma nova coluna que não tem um nome natural, alias 'também pode ser usado com qualquer coluna existente para fornecer um nome mais significativo na saída.

As tabelas também podem receber um apelido, isto é particularmente comum em consultas de junção envolvendo múltiplas tabelas onde é necessário distinguir entre colunas com o mesmo nome em tabelas diferentes. Ao mesmo tempo, usando operadores para criar novas colunas, além disso, há muitas características de Colmeia incorporadas que podem ser usadas.

Características do Hive

Funções simples

Concat pode ser usado para adicionar cordas

SELECIONE anonid, acorn_category,
acorn_group,
acorn_type,
concat (acorn_category, ",", acorn_group, ",", acorn_type)  AS acorn_code
FROM geog_all;

substr pode ser usado para extrair uma parte de uma cadeia

SELECIONE anon_id,
tempo avançado,
substr (tempo avançado, 1, 2) Dia as,
substr (tempo avançado, 3, 3) Mês as,
substr (tempo avançado, 6, 2) AS year
FROM elec_c;

Exemplos de comprimento, instrução e investimento

SELECIONE anonid,
     acorn_code,
     comprimento (acorn_code),
     Instr (acorn_code, ',') AS a_catpos,
     Instr (reverter (acorn_code), "," ) AS reverse_a_typepo

Onde características imperdíveis podem aninhar juntos e digitar conversões

SELECIONE anonid,
substr (acorn_code, 7, 2) AS ac_type_string,
elenco (substr (acorn_code, 7, 2) COMO INT) AS ac_type_int,
substr (acorn_code, 7, 2) +1 AS ac_type_not_sure
FROM geog_all;

Agregações

Funções agregadas são usadas para realizar algum tipo de cálculo matemático ou estatístico em um grupo de linhas. As linhas em cada grupo são determinadas pelos diferentes valores em uma coluna ou colunas específicas. Uma lista de todos os recursos disponíveis está ativada na documentação apache.

SELECIONE anon_id,
              contar (eleckwh) AS total_row_count,
              soma (eleckwh) AS total_period_usage,
              min (eleckwh) AS min_period_usage,
              média (eleckwh) AS avg_period_usage,
             max (eleckwh) AS max_period_usage
       FROM elec_c
GROUP BY anon_id;

No exemplo acima, cinco agregações foram feitas em uma única coluna anon_id. é viável adicionar em várias colunas, especificando-as tanto na cláusula seleção quanto no grupo por cláusula. agrupamento será realizado de acordo com a ordem das colunas listadas no grupo por cláusula. o que não é permitido é especificar uma coluna não adicionada na cláusula seleção que não é mencionada no grupo por cláusula.

SELECIONE anon_id,
              substr (tempo avançado, 6, 2) AS reading_year,
              contar (eleckwh) AS total_row_count,
              soma (eleckwh) AS total_period_usage,
              min (eleckwh) AS min_period_usage,
              média (eleckwh) AS avg_period_usage,
              max (eleckwh) AS max_period_usage
       FROM elec_c
GROUP BY anon_id, substr (tempo avançado, 6, 2);

Infelizmente, o grupo por cláusula não vai aceitar pseudônimos '.

SELECIONE anon_id,
              substr (tempo avançado, 6, 2) AS reading_year,
              contar (eleckwh) AS total_row_count,
              soma (eleckwh) AS total_period_usage,
              min (eleckwh) AS min_period_usage,
              média (eleckwh) AS avg_period_usage,
              max (eleckwh) AS max_period_usage
      FROM elec_c
GROUP BY anon_id, substr (tempo avançado, 6, 2)
ORDEM POR anon_id, reading_year;

Mas a Ordem por cláusula faz..

a palavra-chave distinta fornece um conjunto de uma combinação única de valores de coluna dentro de uma tabela sem qualquer agregação.

SELECIONE Eprofileclass DISTINTO, fueltypes
FROM geog_all;

Funções de data

Nas mesas de elec_c e gas_c, a coluna de data e hora avançada, mesmo que contenha informações sobre o tipo de timestamp, é definido como um tipo de string. Durante a maior parte do tempo, isso pode ser bastante conveniente. Apesar disto, haverá momentos em que realmente precisamos ser capazes de tratar a coluna como um estamp de tempo.. Talvez o exemplo mais óbvio seja quando você precisa classificar as linhas de acordo com a coluna avançada no tempo..

A Colmeia fornece uma série de funções associadas à data que permitem converter sequências em datas e, ao mesmo tempo, extrair partes do timestamp.

unix_timestamp retorna os dados e tempo atuais, como um inteiro!

from_unixtime pega um inteiro e transforma-o em uma sequência de timestamp reconhecível

SELECIONE unix_timestamp () AS currenttime
FROM sample_07
LIMIT 1;

SELECIONE from_unixtime (unix_timestamp ()) AS currenttime
FROM sample_07
LIMIT 1;

Existem várias ferramentas de parte de data que extrairão as partes relevantes de uma cadeia de carimbo de tempo

SELECIONE anon_id,
             from_unixtime (UNIX_TIMESTAMP (reading_date, 'ddMMMyy'))
                  AS proper_date,
            ano (from_unixtime (UNIX_TIMESTAMP (reading_date, 'ddMMMyy')))
                 AS full_year,
            mês (from_unixtime (UNIX_TIMESTAMP (reading_date, 'ddMMMyy')))
                AS full_month,
            dia (from_unixtime (UNIX_TIMESTAMP (reading_date, 'ddMMMyy')))
               AS full_day,
           last_day (from_unixtime (UNIX_TIMESTAMP (reading_date, 'ddMMMyy')))
              AS last_day_of_month,
           date_add ( (from_unixtime (UNIX_TIMESTAMP (reading_date, 'ddMMMyy'))),10)
              AS added_days
FROM elec_days_c
ORDER BY proper_date;

conclusão:

No post, cobrimos algumas funções e consultas básicas do Hive. A execução de consultas em dados distribuídos não é muito diferente da execução de consultas no MySQL. Isso seguirá alguns posts onde cobriremos funções e consultas mais avançadas.. Espero que tenha gostado do post. Não se esqueça de deixar seus comentários na seção de comentários abaixo.

Recomendo que você leia essas postagens para se familiarizar com as ferramentas para Big Data:

Deixe-nos saber seus pensamentos nos comentários abaixo..

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.