【问题标题】:Optimize Temporary Table on Presto/Hive SQL优化 Presto/Hive SQL 上的临时表
【发布时间】:2021-01-31 07:19:21
【问题描述】:

我想优化在 PRESTO/HIVE SQL 上运行的查询的计算时间。我在 Redshift 上使用的技术之一是提高临时表的效率,如下所示:

BEGIN;
CREATE TEMPORARY TABLE my_temp_table(
column_a varchar(128) encode lzo,
column_b char(4) encode bytedict)
distkey (column_a) -- Assuming you intend to join this table on column_a
sortkey (column_b) -- Assuming you are sorting or grouping by column_b
;
INSERT INTO my_temp_table SELECT column_a, column_b FROM my_table;
COMMIT;

我已经在 Presto/Hive SQL 上尝试过,但它不受支持。您知道这种技术在 Presto/Hive SQL 上的等价物吗?

非常感谢!

【问题讨论】:

    标签: sql hive amazon-redshift presto


    【解决方案1】:

    Redshift 是关系型数据库,Presto 是分布式 SQL 查询引擎。 Presto 目前不支持创建临时表,也不支持创建索引。但是您可以通过CREATE TABLE AS - Presto Documentation 基于 SQL 语句创建表

    您可以通过两种方式优化 Presto 的性能:

    • 优化查询本身
    • 优化基础数据的存储方式

    最好的文章之一是 Top 10 Performance Tuning Tips for Amazon Athena - Athena 是基于 Presto 0.172 的 AWS 服务,因此这些技巧也适用于 Presto。

    【讨论】:

      【解决方案2】:

      我不是 Redshift 专家,但您似乎想预先计算一个数据集,将其分发并按选定的列排序,以便查询更快。

      这对应于 Presto Hive 连接器的能力:

      • 分区数据 -- 分区列中具有相同值的数据将形成一个单独的分区,即存储上的一个文件夹;不要在高基数列上使用分区。这是使用partitioned_by 表属性定义的
      • bucket data -- 使用bucketing column(s)的散列将数据分组到文件中;这在一定程度上类似于分区。这是使用bucketed_bybucket_count 表属性定义的。
      • 排序数据——在数据文件中,数据按给定列排序。这是使用sorted_by 表属性定义的。

      查看Trino (formerly Presto SQL) Hive connector documentation中的示例

      注意:虽然我意识到目前文档稀缺,但我提交了an issue to improve。同时,您可以通过Trino (formerly Presto SQL) community slack获取更多信息。

      【讨论】:

      • 非常感谢 Piotr 的帮助!我实际上是在尝试优化使用 with 语句的查询。例如, WITH sub1 as ( SELECT 1 AS x ), sub2 as ( SELECT x AS y ) SELECT * FROM sub2 而我想要代替默认存储临时表 sub1 和 sub2 来优化它们的存储。据我了解,“partitioned_by、bucketed_by 和 sorted_by”可用于优化数据库表而非子查询的存储。对吗?
      • 在 Presto 中 WITH(公用表表达式)是内联的(您可以将其视为 VIEW)。如果您使用WITH 只是为了以更易读的方式构建您的查询,这是合理的。如果公用表表达式被多次引用,您可能需要使用显式 CREATE TABLE 来捕获它。
      猜你喜欢
      • 2017-12-31
      • 1970-01-01
      • 2018-04-07
      • 2010-11-23
      • 1970-01-01
      • 2018-02-16
      • 2016-08-24
      • 2021-07-27
      • 2011-08-12
      相关资源
      最近更新 更多