我需要从imapala查询每小时一次的map reduce批处理结果
output directory structure will be
/data/access/web1/2015/Jan/day1/09/part-r-00000
/data/access/web1/2015/Jan/day1/09/part-r-00001
...
/data/access/web1/2015/Jan/day1/20/part-r-00000
/data/access/web1/2015/Jan/day1/20/part-r-00001
...
/data/access/web1/2015/Jan/day2/01/part-r-00000
...
/data/access/web1/2015/Jan/day30/18/part-r-00000
....
是否可以创建一个impala表来读取数据 /data/access/web1/*
目录(包括子目录)
默认情况下,impala不从子目录查询数据。
如何在impala中启用递归读取?
解决方法是在impala中创建分区表。但是分区表不符合我们的要求。
如何解决这个问题?
2条答案
按热度按时间wnavrhmk1#
checkout 配置单元外部表:
impala将递归地从给定的hdfs目录读取数据。
将新文件添加到hdfs目录时,调用
refresh my_external_table;
在 Impala 上通知 Impala 新的数据。kyvafyod2#
到目前为止,impala不支持从表位置下的子目录递归读取文件。示例:如果使用位置“/home/data/input/”创建表
如果目录结构如下:
然后 Impala 只能从以下文件中查询
不查询以下文件
作为替代解决方案,您可以从配置单元读取数据并插入到最终的配置单元表中。
在此表的顶部创建一个impala视图,用于交互式查询或报告查询。
您可以使用以下配置设置在配置单元中设置此功能。
配置单元支持带有选项的子目录扫描
设置mapred.input.dir.recursive=true;
和
设置hive.mapred.supports.subdirectories=true;