Reg:配置单元中查询优化程序的效率

问题描述 投票:2回答:1

阅读了查询优化技术后,我了解了以下技术。

1. Indexing - bitmap and BTree
2. Partitioning
3. Bucketing

我得到了分区和存储分区以及何时使用它们的区别,但是我仍然对索引的实际工作方式感到困惑。索引的元数据存储在哪里?是存储它的namenode吗?即,实际上,在创建分区或存储桶时,我们可以在hdfs中看到多个目录,这些目录解释了查询性能的优化,但是如何可视化索引呢?尽管存在分区和存储桶,但它们是否真的在现实生活中使用?

请帮助我进行上述查询,Hadoop和Hive开发人员社区是否有专门的页面?

hadoop indexing hive hiveql
1个回答
1
投票
  1. Hive中的索引在现实生活中从未使用过,也从未高效使用,正如@mazaneicha在注释中注意到的那样,Hive 3.0中的索引功能已完全删除,请阅读此Jira:HIVE-18448。无论如何,都是很棒的尝试,这要归功于Facebook support,已经学到了宝贵的经验教训。

但是ORC中有轻量级的索引(嗯,实际上不是经典索引,而是min,max和Bloom过滤器,它有助于修剪条带)。 ORC索引也是最有效的,因为数据是在插入(distribute + sort)时进行排序的]

  1. 如果分区模式与表的过滤方式或加载方式相对应,则分区效率最高(如果增量数据是整个分区,则可以并行加载分区,如果增量数据有效,则可以工作)。]]] >

  2. 括弧可以帮助优化联接和分组方式,但是sort-merge-bucket-mapjoin具有严重的限制,因此效率也不高。这两个表应具有相同的存储架构,在现实生活中这是罕见的,或者效率极低。加载存储区时,数据也应排序。

  3. 考虑将ORC与内置索引和Bloom过滤器一起使用,请在表中保留较少数量的文件,以避免元数据过载,并避免映射器复制数千个文件。阅读此partitions in hive interview questions和此Sorted Table in Hive

    有用的链接。

官方文档:LanguageManual

Cloudera社区:https://community.cloudera.com/

© www.soinside.com 2019 - 2024. All rights reserved.