使用 S3 Select Pushdown 搭配 Presto 提高性能 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 S3 Select Pushdown 搭配 Presto 提高性能

重要

不再向新客户提供 Amazon S3 Select。Amazon S3 Select 的现有客户可以像往常一样继续使用该功能。了解更多

在亚马逊EMR发布版本 5.18.0 及更高版本中,你可以在亚马逊上将 S3 selec t Pushdown 与 Presto 一起使用。EMR此功能允许 Presto 将投影操作(例如,SELECT)和谓词操作(例如,WHERE)的计算工作“下推”至 Amazon S3。这允许查询仅从 Amazon S3 中检索所需的数据,这可以提高性能并减少某些应用程序中在 Amazon EMR 和 Amazon S3 之间传输的数据量。

S3 Select Pushdown 是否适合我的应用程序?

建议您分别在使用和不使用 S3 Select Pushdown 的情况下对您的应用程序进行基准检验,以查看其是否适用于您的应用程序。

使用以下准则来确定您的应用程序是否为使用 S3 Select 的候选项:

  • 您的查询将筛选掉原始数据集的一半以上的数据。

  • 您的查询筛选谓词使用具有 Presto 和 S3 Select 支持的数据类型的列。S3 Select Pushdown 不支持时间戳、实数和双精度数据类型。建议对数值数据使用十进制数据类型。有关 S3 Select 支持的数据类型的更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的数据类型

  • 您的 Amazon S3 和 Amazon EMR 集群之间的网络连接具有良好的传输速度和可用带宽。Amazon S3 不压缩响HTTP应,因此压缩后的输入文件的响应大小可能会增加。

注意事项和限制

  • 仅支持以CSV格式存储的对象。对象可以解压缩,也可以选择使用 gzip 或 bzip2 压缩。

  • 不支持 AllowQuotedRecordDelimiters 属性。如果指定该属性,则查询将失败。

  • 不支持使用客户提供的加密密钥 (SSE-C) 的 Amazon S3 服务器端加密和客户端加密。

  • S3 Select Pushdown 不能替代使用列式或压缩文件格式,例如ORC或 Parquet。

  • Amazon S3 Select 不支持 Presto 和 Trino 的跨区域查询。

启用 S3 Select Pushdown with PrestoDB 或 Trino

要在 Amazon 上EMR启用 PrestoDB 的 S3 Select Pushdown,presto-connector-hive请使用配置分类hive.s3select-pushdown.enabled将其true设置为,如下例所示。有关更多信息,请参阅 配置应用程序。还必须设置 hive.s3select-pushdown.max-connections 值。对于大部分应用程序,500 的默认设置应该能满足需求。有关更多信息,请参阅下面的 了解和调整 hive.s3select-pushdown.max-connections

对于 6.1.0-6.3.0 EMR 版本SQL上的 Presto,请在以下示例presto-connector-hive中替换为。prestosql-connector-hive

亚马逊 6.4.0 及更高EMR版本使用新名称 Trino 而不是 Presto。SQL如果您使用 Trino,请在以下示例中将 presto-connector-hive 替换为 trino-connector-hive

[ { "classification": "presto-connector-hive", "properties": { "hive.s3select-pushdown.enabled": "true", "hive.s3select-pushdown.max-connections": "500" } } ]

了解和调整 hive.s3select-pushdown.max-connections

默认情况下,Presto 使用EMRFS作为其文件系统。emrfs-site配置分类fs.s3.maxConnections中的设置指定了 Presto 允许与 Amazon S3 的最大客户端连接数。EMRFS默认情况下,此连接数为 500。访问 Amazon S3 进行谓词操作EMRFS时,S3 Select Pushdown 会绕过。在此示例中,hive.s3select-pushdown.max-connections 的值确定从 Worker 节点执行这些操作所允许的最大客户端连接数。但是,Presto 向 Amazon S3 发起的任何未向下推的请求(例如GET操作)将继续受值的约束。fs.s3.maxConnections

如果您的应用程序遇到错误“Timeout waiting for connection from pool”,请增加 hive.s3select-pushdown.max-connectionsfs.s3.maxConnections 的值。