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