como podemos testar as funções do HIVE sem fazer referência a uma tabela
Pergunta
Queria entender o UDF WeekOfYear e como ele começa na primeira semana.Eu tive que bater artificamente uma mesa e executar a consulta.Queria não bater na mesa e calcular os valores.Em segundo lugar, posso ver o código-fonte do UDF?
SELECT weekofyear
('12-31-2013')
from a;
Solução
Você não precisa de tabela para testar o UDF desde o Hive 0.13.0.
Veja esta Jira: HIVE-178 SELECT sem FROM deve assumir uma tabela de uma linha sem colunas
Teste:
hive> SELECT weekofyear('12-31-2013');
Resultado:
OK
1
Time taken: 0.912 seconds, Fetched: 1 row(s)
O código fonte (ramo master) está aqui: UDFWeekOfYear.java
Outras dicas
Se você for desenvolvedor Java, poderá escrever casos de teste Junit e testar as UDFs.
você pode pesquisar o código-fonte de todas as funções integradas do Hive em código grep.
Não acho que seja possível executar UDF sem acessar as tabelas no Hive.Até mesmo os desenvolvedores do Hive bateu na mesa em testes UDF.
Para tornar a consulta mais rápida, você pode:
- Crie uma tabela com apenas uma linha e execute consultas UDF nesta tabela
- Execute o Hive no modo local.
O código-fonte do Hive está localizado aqui.
UDFWeekOfYear
fonte é aqui.
Você deve poder usar qualquer tabela com pelo menos uma linha para testar funções.Aqui está um exemplo usando algumas funções personalizadas que realizam trabalho e geram um resultado de string.
Substitua anytable por uma tabela real.
SELECIONE ST_AsText(ST_Intersection(ST_Polygon(2,0, 2,3, 3,0), ST_Polygon(1,1, 4,1, 4,4, 1,4))) FROM qualquer mesa LIMITE 1;
Resultados HIVE:
OK
POLÍGONO ((2 1, 2,6666666666666665 1, 2 3, 2 1))
Tempo gasto:0,191 segundos, buscado:1 linha(s)
colmeia>