如何在imapla中启用递归读取

xdyibdwo  于 2021-05-30  发布在  Hadoop
关注(0)|答案(2)|浏览(841)

我需要从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中创建分区表。但是分区表不符合我们的要求。
如何解决这个问题?

wnavrhmk

wnavrhmk1#

checkout 配置单元外部表:

CREATE EXTERNAL TABLE my_external_table (c1 INT, c2 STRING, c3 TIMESTAMP)
  LOCATION '/data/access/web1';

impala将递归地从给定的hdfs目录读取数据。
将新文件添加到hdfs目录时,调用 refresh my_external_table; 在 Impala 上通知 Impala 新的数据。

kyvafyod

kyvafyod2#

到目前为止,impala不支持从表位置下的子目录递归读取文件。示例:如果使用位置“/home/data/input/”创建表
如果目录结构如下:

/home/data/input/a.txt 
/home/data/input/b.txt
 /home/data/input/subdir1/x.txt
 /home/data/input/subdir2/y.txt

然后 Impala 只能从以下文件中查询

/home/data/input/a.txt
 /home/data/input/b.txt

不查询以下文件

/home/data/input/subdir1/x.tx
 /home/data/input/subdir2/y.txt

作为替代解决方案,您可以从配置单元读取数据并插入到最终的配置单元表中。
在此表的顶部创建一个impala视图,用于交互式查询或报告查询。
您可以使用以下配置设置在配置单元中设置此功能。
配置单元支持带有选项的子目录扫描
设置mapred.input.dir.recursive=true;

设置hive.mapred.supports.subdirectories=true;

相关问题