我有日志文件,文件名中包含日期和小时。有没有一种方法可以从文件名中提取date&hour来在配置单元中添加额外的列,例如weblogs-20150101-010000.gz。我知道的方法是使用map-only作业将日期和小时顺序地附加到每一行,但是我正在尝试通过hadoop流看看是否有一个更简单的方法。
x6yk4ghg1#
如果查询性能很重要,并且要按日期/小时进行筛选,则可以通过将文件放置在包含日期属性的文件夹中来对数据进行分区,例如。 /path/to/your/data/year=2015/month=05/day=25/hour=14/ ,然后将这些分区添加到配置单元表中。另一种方法是使用Hive的 INPUT__FILE__NAME 虚拟列和使用它的筛选器,例如。
/path/to/your/data/year=2015/month=05/day=25/hour=14/
INPUT__FILE__NAME
SELECT * FROM WEBLOGS WHERE INPUT__FILE__NAME LIKE '%20150101-010000.gz'
1条答案
按热度按时间x6yk4ghg1#
如果查询性能很重要,并且要按日期/小时进行筛选,则可以通过将文件放置在包含日期属性的文件夹中来对数据进行分区,例如。
/path/to/your/data/year=2015/month=05/day=25/hour=14/
,然后将这些分区添加到配置单元表中。另一种方法是使用Hive的
INPUT__FILE__NAME
虚拟列和使用它的筛选器,例如。