首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Presto/Hive SQL上优化临时表

在Presto/Hive SQL上优化临时表
EN

Stack Overflow用户
提问于 2020-10-16 18:41:39
回答 2查看 6K关注 0票数 0

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

代码语言:javascript
复制
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上的等效性吗?

非常感谢!

EN

回答 2

Stack Overflow用户

发布于 2020-10-16 19:11:30

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

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

  • 优化查询本身
  • 优化底层数据的存储方式

最好的文章之一是亚马逊雅典娜十大性能调优技巧 -雅典娜是一个基于Presto 0.172的AWS服务,因此这些提示也适用于Presto。

票数 2
EN

Stack Overflow用户

发布于 2020-10-17 14:04:37

我不是Redshift专家,但似乎您希望预先计算数据集、分发数据并按所选列进行排序,以便更快地进行查询。

这对应于Presto Hive连接器的以下功能:

  • 分区数据--分区列中具有相同值的数据将形成一个分区,该分区是存储中的一个文件夹;不要在基数较高的列上使用分区。这是使用partitioned_by表属性定义的。
  • 桶数据--数据是使用斗列的散列将数据分组到文件中的;这在某种程度上类似于分区。这是使用bucketed_bybucket_count表属性定义的。
  • 对数据进行排序--在数据文件中,数据按给定列排序。这是使用sorted_by表属性定义的。

参见Trino (前Presto SQL) Hive连接器文档中的示例

注意:虽然我意识到目前文档很少,但我提交了需要改进的问题文档。同时,您可以获得有关Trino (前Presto SQL)社区松弛的其他信息。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64394736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档