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;
Foi útil?

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.

http://grepcode.com/file/repo1.maven.org/maven2/org.apache.hive/hive-exec/1.0.0/org/apache/hadoop/hive/ql/udf/UDFWeekOfYear.java

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:

  1. Crie uma tabela com apenas uma linha e execute consultas UDF nesta tabela
  2. 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>

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top