【问题标题】:Performance of partitioned view of an unpartitioned table未分区表的分区视图的性能
【发布时间】:2021-11-03 12:20:07
【问题描述】:

我有一个未分区的配置单元表,用于创建分区视图。该表只有一些元数据列,实际数据存储在一个数组中,这使得查询变得困难。因此,数据被分解成一个视图,然后用于所有查询目的。此视图在数据到达的日期进行分区。这种情况下,原表未分区会影响性能吗?原表也应该分区吗?

【问题讨论】:

    标签: sql apache-spark pyspark hive


    【解决方案1】:

    如果基础表未分区,则视图分区根本没有用

    当然,如果要进行分区修剪,则应该对表进行分区,否则将执行全扫描。

    另一方面,如果table is partitionedview is not partitioned 和查询在表分区上有谓词,优化器足够聪明地从视图定义中获取分区信息,将谓词下推并分区修剪工作。这使得视图分区相当无用的功能和手动管理的视图分区增加了不必要的复杂性。更好地使用分区表和普通的未分区视图。

    如果分区修剪适用于非分区视图,为什么您可能需要分区视图。一种可能的用例是,受限用户只能看到视图,而不是底层表,并且不同的工具只能从视图元数据中获取分区信息并建议对分区进行过滤,而对底层表一无所知。从受限用户的角度来看,视图与表相同,他们应该看到分区模式。

    HIVE-1079:

    对于手动方法,我们可以从一个非常简单的开始就是 让用户显式地将分区添加到视图中 表示底层数据已准备就绪。

    另请参阅HIVE-1941 和此design document

    BTW Materialized views 已经在 Hive 3.0.0 中实现,并且对它们进行分区更有意义,因为它们中的数据相应地存储在 DDL 中指定的分区架构中。

    【讨论】:

      猜你喜欢
      • 2012-07-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-05
      • 2012-08-29
      相关资源
      最近更新 更多