首页 > 解决方案 > hive,请求特定范围内的文件

问题描述

假设在 HDFS 上我有以下内容的文件:data1-2018-01-01.txt, data1-2018-01-02.txt, data1-2018-01-03.txt, data1-2018-01-04.txt,data1-2018-01-06.txt

现在我想根据日期查询文件:

select * from mytable where date > 2018-01-03 and date < 2018-01-06 ;

我的问题是:是否可以仅在满足我查询的这些文件上创建一个外部表?或者,也许您有任何解决方法?

我知道,我可以使用分区,但它们需要在新数据集到达时手动获取数据。

标签: hadoophivehdfs

解决方案


将这些文件放入一个目录并在其上创建新表。Hive 还具有 INPUT__FILE__NAME 虚拟列,您可以将其用于过滤:

where INPUT__FILE__NAME like '%2018-01-03%'

也可以使用 substr 或 regexp_extract 从 filename 获取日期,然后使用INor>, <过滤它们。


推荐阅读