Использование UDF для запроса таблицы в Hive - PullRequest
0 голосов
/ 10 марта 2020

У меня есть следующий UDF, доступный в Hive для преобразования времени bigint в date,

to_date(from_utc_timestamp(from_unixtime(cast(listed_time/1000 AS bigint)),'PST'))

Я хочу использовать этот UDF запросить таблицу на указанную c дату. Что-то вроде

SELECT * FROM <table_name> 
WHERE date = '2020-03-01'
ORDER BY <something>
LIMIT 10

1 Ответ

1 голос
/ 10 марта 2020

Я бы предложил изменить логи c: избегайте применения функции к фильтруемому столбцу, потому что это неэффективный подход. Эту функцию необходимо вызывать для каждой строки, что исключает возможность запроса для индекса.

С другой стороны, вы можете просто преобразовать введенную дату в unix метку времени (возможно, с UDF). Это должно выглядеть так:

SELECT * FROM <table_name> 
WHERE date = to_utc_timestamp('2020-03-01', 'PST') * 1000
ORDER BY <something>
LIMIT 10
...