使用配置单元更新表

时间:2018-02-10 00:40:09

标签: hadoop hive

现在我运行以下Hive查询

CREATE TABLE dwo_analysis.exp_shown AS
SELECT

MIN(sc.date_time) as first_shown_time,
SUBSTR(sc.post_evar12,1,24) as guid,
sc.post_evar238 as experiment_name,
sc.post_evar239 as variant_name

FROM test

WHERE report_suite='adbemmarvelweb.prod'
AND date >= DATE_SUB(CURRENT_DATE,90) AND date < DATE_SUB(CURRENT_DATE, 2)
AND post_prop5 = 'experiment:standard:authenticated:shown'
AND post_evar238 NOT LIKE 'control%'
AND post_evar238 <> ''
AND post_evar239 <> ''

表测试很大。我希望通过运行一次优化此查询,并每隔一次更新表,方法是获取最近2天的数据并将其添加到表中。

所以基本上运行上面的查询一次,每次再次运行但条件

WHERE click_date&gt; = DATE_SUB(CURRENT_DATE,2)AND click_date&lt; DATE_SUB(CURRENT_DATE)

如何使用配置单元更新表格以填充上述条件中提到的行?

1 个答案:

答案 0 :(得分:1)

首先,如果根据日期对Hive表进行分区,您的查询会更快。您的create table语句不会插入任何分区,因此我怀疑您的表没有被分区。如果源数据是Parquet / ORC

,它也会更快

在任何情况下,您都可以覆盖表格,如日期范围

INSERT OVERWRITE TABLE dwo_analysis.exp_shown
    SELECT * FROM test 
WHERE click_date 
  BETWEEN DATE_SUB(CURRENT_DATE, 2) AND CURRENT_DATE;