将文件的最后修改日期添加到Hive外部表

时间:2017-07-18 15:30:49

标签: hive hdfs

我有一个要求,我需要将文件作为Hive外部表中的列添加到HDFS文件夹中的时间。

示例:我在

上删除了2个文件
  • 2017-07-13 15:22
  • 2017-12-13 18:31

因此,我在Hive表中的last_modified列应该反映2017-07-13 15:22对于文件1和2017-12-13 18:31中文件2的所有行。

有没有办法在外部表create语句中实现这一点。

提前致谢!

1 个答案:

答案 0 :(得分:0)

我没有遇到任何此类功能来解决您的问题。但是,您可以尝试以下步骤在单独的列中维护每个文件的上次修改时间:

  • last_modified列上创建分区表。

     CREATE EXTERNAL TABLE test (record string) PARTITIONED BY
    (last_modified string) location '<warehouse_location>/test.db/test'
    
  • 对于每个文件,将新分区添加到表中,或使用insert语句加载到分区中。

    ALTER TABLE test ADD PARTITION (last_modified='2017-07-13 15:22')
    location '<data-location>/newfile1/';
    

    在新文件上创建单独的临时表,然后插入数据 分区表:

    CREATE EXTERNAL TABLE tmp (record strin ) location '<new data location>'
    
    INSERT INTO TABLE test PARTITION (
    last_modified = '2017-07-13 15:22') SELECT record FROM tmp;