在Hive中优化多个相同的运算符和函数调用?

时间:2017-01-25 22:03:06

标签: hive

我是Hive的新手并尝试优化需要一段时间才能运行的查询。我在SELECT和WHERE语句中对regexp_extract和get_json进行了相同的调用,我想知道是否有一种方法可以通过存储一个语句的结果并在另一个语句中使用它们来优化它(或者如果Hive已经在做这样的事情了在后台)。

示例查询:

SELECT
    regexp_extract(get_json(json, 'url'), '.*[&?]q=([^&]*)') as query
FROM
   api_request_logs
WHERE
    LENGTH(regexp_extract(get_json(json, 'url'), '.*[&?]q=([^&]*)')) > 0

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用派生表仅指定一次正则表达式,但我不认为它运行得更快

select * from (
    select regexp_extract(get_json(json, 'url'), '.*[&?]q=([^&]*)') as query
    from api_request_logs
) t where length(query) > 0