【问题标题】:Support for Indexing under HIVE ORC format支持 HIVE ORC 格式下的索引
【发布时间】:2025-12-12 18:00:01
【问题描述】:

我们正在寻求部署一个报告解决方案,其中数据存储在 HIVE/Hadoop 数据层中,报告层将使用 SSRS 查询该数据层。

现在考虑性能优化,考虑到我们将在 HIVE 上使用 ORC 文件格式,考虑在数据层上进行索引是否有意义。

根据下面的一些参考资料,看起来索引是 ORC 文件格式固有的?是这种情况还是有什么不同。

LanguageManual ORC

我是 HIVE/Hadoop 的新手,所以如果有任何建议,我将不胜感激。谢谢!

【问题讨论】:

  • 你不需要ORC来使用INDEX...cwiki.apache.org/confluence/display/Hive/…
  • 如果您在 Cloudera 环境中,Impala 中的 Parquet 将比 Hive 性能更高,但如果您有带有 LLAP 的 Hive2,ORC 可能会很好。分区也是一种优化...
  • 感谢 cricket_007 的输入,这很好,你提到“你不需要 ORC 来使用 INDEX..”。但是,我的问题更多是围绕我们使用 ORC 格式以及将索引与 ORC 格式一起使用是否有意义的事实,因为似乎 ORC 格式本身具有一些固有的索引。谢谢。
  • 我确定可以做到(不记得我是否亲自做过)。当然,它可能会带来一些性能提升。

标签: hadoop indexing hive ssrs-2012


【解决方案1】:

ORC 文件中的索引有不同的用途。来自文档

存储在文件中的轻量级索引跳过不 将谓词过滤传递给给定的行

然而,索引的设计是为了优化对特定列的搜索。

Hive 索引的目标是提高查询查找的速度 表的某些列。没有索引,带有谓词的查询 像 'WHERE tab1.col1 = 10' 加载整个表或分区并 处理所有行。但是如果 col1 存在索引,那么只有一个 需要加载和处理文件的一部分。

我不确定这是否适合您的报告模型,可能不会帮助很多常见的聚合

希望对你有帮助

【讨论】: