我想优化在PRESTO/HIVE上运行的查询的计算时间。我在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上的等效性吗?
非常感谢!
发布于 2020-10-16 19:11:30
Redshift是关系数据库,Presto是一个分布式SQL查询引擎。Presto目前不支持创建临时表,也不支持创建索引。但是您可以通过CREATE TABLE AS - Presto文件创建基于SQL语句的表。
您可以通过两种方式优化Presto的性能:
最好的文章之一是亚马逊雅典娜十大性能调优技巧 -雅典娜是一个基于Presto 0.172的AWS服务,因此这些提示也适用于Presto。
发布于 2020-10-17 14:04:37
我不是Redshift专家,但似乎您希望预先计算数据集、分发数据并按所选列进行排序,以便更快地进行查询。
这对应于Presto Hive连接器的以下功能:
partitioned_by表属性定义的。bucketed_by和bucket_count表属性定义的。sorted_by表属性定义的。参见Trino (前Presto SQL) Hive连接器文档中的示例
注意:虽然我意识到目前文档很少,但我提交了需要改进的问题文档。同时,您可以获得有关Trino (前Presto SQL)社区松弛的其他信息。
https://stackoverflow.com/questions/64394736
复制相似问题