我有一个要求,我需要将文件作为Hive外部表中的列添加到HDFS文件夹中的时间。
示例:我在
上删除了2个文件因此,我在Hive表中的last_modified列应该反映2017-07-13 15:22对于文件1和2017-12-13 18:31中文件2的所有行。
有没有办法在外部表create语句中实现这一点。
提前致谢!
答案 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;