Introdução às funções internas do Hive
As funções são criadas para executar diferentes requisitos e operações analíticas, como matemática, lógica, aritmética e relacional, em grandes conjuntos de dados e tabelas. As funções são usadas quando precisamos reutilizar operações semelhantes várias vezes. Neste mundo avançado do BigData, para manipular e processar enormes conjuntos de dados, a criação de programas MapReduce se torna difícil. Portanto, a Hive Query Language (HQL) foi introduzida no Apache Hadoop em outubro de 2010, usando a qual podemos executar consultas facilmente, semelhantes aos SQLs. HQLs são posteriormente convertidos internamente em programas Mapreduce para produzir os resultados. Neste tópico, discutiremos as funções internas do Hive.
As funções do Hive são amplamente categorizadas em dois:
- Funções incorporadas
- Funções definidas pelo usuário
Funções internas do Hive
As funções internas são predefinidas e estão prontamente disponíveis para uso no Hive. Eles são classificados como abaixo:
1. Funções de String
Usado para manipulação e transformação de strings.
Nome da Função | Tipo de retorno | Descrição | Exemplo |
substr (string, int, int) | Corda | Retorna uma string da posição inicial especificada para o comprimento especificado | substr ('Hive query', 5, 5) resulta em 'query' |
rtrim (string X) | Corda | Retorna uma string sem espaços à direita | rtrim ('Hello') resulta em 'Hello' |
ltrim (string X) | Corda | Retorna uma string sem espaços à esquerda | ltrim ('Hello') resulta em 'Hello' |
reverso (string X) | Corda | Retorna uma string invertida de X | reverse ('olá') resulta em 'olleh' |
rpad (string X, int, string) | Corda | Retorna uma string acolchoada direita com 'pad' para um comprimento de | rpad ('Olá', 3, 'oi') resulta em 'Olá, oi oi, oi' |
lpad (string X, int, string) | Corda | Retorna uma corda acolchoada esquerda com 'pad' para um comprimento de | lpad ('Hello', 3, 'Hi') resulta em 'Hi Hi Hi Hello' |
split (string X, string pat) | Matriz | Retorna uma matriz de cadeias após dividir a cadeia em torno do padrão especificado | A divisão (“A, B, C, D”, ”, ”) resulta em ('A', B ', ' C ', ' D ') |
comprimento (string X) | Inteiro | Retorna o comprimento da string X | length ('Bigdata') resulta em 7 |
concat (sequência X, sequência Y) | Corda | Retorna uma sequência concatenada de X e Y | concat ('Hello', 'World') resulta em 'HelloWorld' |
2. Funções Matemáticas
Usado para aplicar operações matemáticas como arredondamento, teto, piso etc. em vez de criar UDFs.
Nome da Função | Tipo de retorno | Descrição | Exemplo |
redondo (X duplo) | Duplo | Retorna o valor arredondado de X | rodada (29, 5) resulta em 30 |
redondo (duplo X, Int d) | Duplo | Retorna o valor arredondado de X para d casas decimais | round (29.3456, 2) resulta em 29, 34 |
teto (duplo X) | Duplo | Retorna um valor mínimo de BIGINT igual ou superior a X | teto (20.5555) resulta em 21 |
piso (duplo X) | Duplo | Retorna um valor máximo de BIGINT igual ou superior a X | teto (20.5555) resulta em 20 |
rand () | Duplo | Retorna números aleatórios entre 0 e 9 | rand () resulta em rand (0-9) |
abs (duplo X) | Duplo | Retorna o valor absoluto do número X | abs (-25) resulta em 25 |
pow (duplo X, duplo Y) | Duplo | Retorna o valor X elevado à potência Y | pow (2, 3) resulta em 8 |
exp (duplo X) | Duplo | Retorna o valor do expoente de X | exp (2) resulta em 7, 389 |
3. Funções Condicionais
Usado para verificar uma expressão como Verdadeiro ou Falso e retorna os resultados correspondentes.
Nome da Função | Tipo de retorno | Descrição | Exemplo |
nulo (X) | boleano | Retorna VERDADEIRO se X for NULL senão falso | isnull ('NULL') retorna em TRUE |
não é nulo (X) | boleano | Retorna VERDADEIRO se X não for NULL senão falso | isnotnull ('NULL') retorna em FALSE |
nvl (arg X, arg Y) | Corda | Retorna arg Y se arg X for NULL, caso contrário, retorne arg X | nvl ('NULL', 'Value is Null') resulta em 'Value is Null' |
if (Boolean testCondition, T valueTrue, T valueFalseOrNull) | T | Retorna True quando a condição de teste for verdadeira e False ou Null caso contrário | if (2 = 2, 'Verdadeiro', 'Falso') |
coalescer (X, Y) | (Qualquer) | Ele retorna os primeiros valores não nulos da lista (eu tenho uma dúvida sobre isso - ele retornará o primeiro valor ou todos os valores não nulos?) | coalescência (nulo, nulo, nulo, 1, 5, nulo, nulo, 6) resulta em 1 |
4. Funções de Data
Usado para realizar manipulações de data e conversões de tipo de data.
Nome da Função | Tipo de retorno | Descrição | Exemplo |
data atual | Encontro | Retorna a data atual da execução da consulta | current_date () retorna a data de hoje |
unix_timestamp () | BigInt | Retorna o carimbo de data / hora unix atual da execução da consulta em segundos | unix_timestamp () retorna o carimbo de hora unix atual |
ano (data da sequência) | Int | Retorna parte do ano de uma data | ano ('1994-11-24') retorna 1994 |
quarto (data da sequência) | Int | Retorna o trimestre do ano de uma data | trimestre ('1994-11-24') retorna 4 |
mês (data da sequência) | Int | Retorna a parte do mês de uma data | mês ('1994-11-24') retorna 11 |
hora (data da sequência) | Int | Retorna a parte da hora do registro de data e hora | hora ('1994-11-24 12:45:23') retorna 12 |
minuto (data da sequência) | Int | Retorna a parte minuto do carimbo de data e hora | ano ('1994-11-24 12:45:23') retorna 45 |
Até a presente data() | Corda | Retorna parte da data da sequência do carimbo de data e hora | to_date () retorna parte da data |
date_sub (data da sequência, dias int) | Corda | Retorna a subtração do número de dias até a data | date_sub ('1994-11-24', 20) retorna '1994-11-04' |
months_between (date1, date2) | Duplo | Ele retorna o número de meses entre date1 e date2 (meses ou não de dias?) | months_between ('1994-11-24 ′, ' 1994-11-04 ') retorna 20 |
5. Função de Coleta
Usado para transformar e recuperar partes de tipos de coleção como mapa, matriz, etc.
Nome da Função | Tipo de retorno | Descrição | Exemplo |
tamanho (mapa) | Int | Retorna o número total de elementos no mapa | size (('a': 2, 'b': 6)) retorna 2 |
tamanho (matriz) | Int | Retorna o número total de elementos na matriz | size ((1, 3, 4, 7)) retorna 4 |
array_contains (matriz, valor) | boleano | Retorna true se a matriz contiver o valor | array_contains ((1, 3, 9, 8, 5, 4, 7), 5) retorna TRUE |
map_keys (mapa) | Matriz | Retorna uma matriz não ordenada de chaves do mapa | map_keys (('a': 2, 'b': 6, 'c': 1)) retorna ('b', 'c', 'a') |
map_valuess (mapa) | Matriz | Retorna uma matriz não ordenada de valores do mapa | map_keys (('a': 2, 'b': 6, 'c': 1)) retorna (1, 6, 2) |
sort_array (matriz) | Matriz | Retorna uma matriz classificada da matriz fornecida | sort_array ((1, 3, 9, 8, 5, 4, 7)) retorna (1, 3, 4, 5, 7, 8, 9) |
Conclusão
Até agora, discutimos diferentes funções internas no Hive. Comparado ao MapReduce, o Hive é mais conveniente e economiza tempo. Qualquer pessoa que possua conhecimentos básicos de SQL pode escrever facilmente HQLs, em vez de programas complicados do MapReduce para processamento de dados.
Artigos recomendados
Este é um guia para as funções internas do Hive. Aqui discutimos as funções internas predefinidas e prontamente disponíveis para uso no Hive. Você também pode consultar o seguinte artigo para saber mais -
- Funções de cadeia de seção do Hive
- Função Hive
- Comandos do Hive
- Arquitetura do Hive
- Hive Order By
- Instalação do Hive
- Funções internas do Python