我正在使用使用多个联合所有运算符的查询填充镶木地板存储格式的分区 Hive 表。使用 Tez 执行查询,默认设置会导致多个并发 Tez writer 创建 HDFS 结构,其中 parquet 文件位于分区文件夹下的子文件夹中(文件夹名称为 Tez writer ID)。例如 /apps/hive/warehouse/scratch.db/test_table/part=p1/8/000000_0
即使在使元数据无效并收集表上的统计信息后,Impala 在查询表时也会返回零行。问题似乎在于 Impala 没有遍历分区子文件夹来查找 parquet 文件。
如果我将 hive.merge.tezfiles 设置为 true(默认为 false),有效地强制 Tez 使用额外的处理步骤将多个文件合并为一个,生成的 parquet 文件直接写入分区文件夹下,刷新后 Impala 可以看到新分区或更新分区中的数据。
我想知道 Impala 是否有一个配置选项来指示它查看分区子文件夹,或者 Impala 是否有一个补丁可以改变它在这方面的行为。