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

在阅读了有关查询优化技术的知识之后,我开始了解以下技术。

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

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

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

sunhongwei2009 回答:Reg:配置单元中查询优化器的效率

  1. Hive中的索引在现实生活中从未使用过,也从未高效使用,正如@mazaneicha在注释中注意到的那样,Hive 3.0中的索引功能已完全删除,请读此Jira:HIVE-18448。无论如何,这都是一次伟大的尝试,这要归功于Facebook support,从而获得了宝贵的经验教训。

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

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

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

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

有用的链接。

官方文档:LanguageManual

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

本文链接:https://www.f2er.com/2409335.html

大家都在问