我有一个用例,其中Hive中的源表每天更新,以便刷新整个数据。在第一天,我们摄取整个表格,但是从第二天开始,我们只对那些"上次修改日期"已更新,以反映前一天的日期。
建议的解决方案是在第1天和第2天存储上次修改日期的MAX,比较上次修改日期大于存储日期的所有行,并仅处理这些行。
每天生成,存储和检索此上次修改日期的最佳方法是什么?此外,不同的表格将有不同的日期,理想情况下,我喜欢具有Table_Name, Last_Modified_Date
的内容,除非有更好的方法。
请帮忙。谢谢。
答案 0 :(得分:0)
如果我正确理解了您的方案,则在每日新运行时,Last_Modified_Date的值只能大于上次运行时Last_Modified_Date的最大值。
在这种情况下,我建议在Last_Modified_Date上创建表分区,并仅处理落入此分区的记录(这比处理比较要快得多)。
答案 1 :(得分:0)
这个解决方案可行吗?
答案 2 :(得分:0)
经过多次头脑风暴,我们决定继续使用中间表来存储上次修改日期的MAX和表名,并将其用作查找以确定要处理的新记录。由于我们使用的是shell脚本,因此我可以使用变量查询表并获取上次修改日期,然后使用该变量处理新的/更新的记录。
答案 3 :(得分:0)
描述格式化的表名...您将获得transient_lastDdlTime,可以使用以下内容进行转换。
SELECT CAST(from_unixtime(your_transient_lastDdlTime_value)AS时间戳);
感谢与问候, Kamleshkumar Gujarathi