从 JDBC 表并行读取 - AWS Glue
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

从 JDBC 表并行读取

您可以设置 JDBC 表的属性,以使 AWS Glue 并行读取数据。当您设置某些属性时,您可以指示 AWS Glue 对数据的逻辑分区运行并行 SQL 查询。您可以通过设置哈希字段或哈希表达式来控制分区。您还可以控制用于访问您的数据的并行读取的数量。

要启用并行读取,可在表结构的参数字段中设置键值对。使用 JSON 表示法为表的参数字段设置值。有关编辑表属性的更多信息,请参阅 查看和编辑表详细信息。当您调用 ETL(提取、转换和加载)方法 create_dynamic_frame_from_optionscreate_dynamic_frame_from_catalog 时,您也可以启用并行读取。有关在这些方法中指定选项的更多信息,请参阅 from_optionsfrom_catalog

您可以将此方法用于 JDBC 表,也即,其基本数据是 JDBC 数据存储的大多数表。当读取 Amazon Redshift 和 Amazon S3 表时,这些属性将被忽略。

hashfield

hashfield 设置为 JDBC 表中要用来将数据划分成分区的列的名称。为了获得最佳效果,此列应具有值的偶数分布以便在各分区之间分布数据。此列可以是任意数据类型。AWS Glue 生成非重叠的查询,这些查询并行运行以读取通过此列进行分区的数据。例如,如果您的数据按月份均匀地分布,您可以使用 month 列并行读取每月的数据。

'hashfield': 'month'

AWS Glue 创建一个查询以便将字段值哈希处理成分区编号,并针对这些分区并行运行该查询。要使用您自己的查询对表读取进行分区,请提供 hashexpression 而不是 hashfield

hashexpression

hashexpression 设置为会返回一个整数的 SQL 表达式(符合 JDBC 数据库引擎语法)。简单表达式是表中任何数字列的名称。AWS Glue 生成 SQL 查询以并行读取 JDBC 数据(通过使用 WHERE 子句中的 hashexpression 对数据分区)。

例如,使用数字列 customerID 来读取按客户编号分区的数据。

'hashexpression': 'customerID'

要让 AWS Glue 控制分区,请提供 hashfield 而不是 hashexpression

hashpartitions

hashpartitions 设置为 JDBC 表的并行读取数目。如果未设置该属性,默认值为 7。

例如,将并行读取数目设置为 5,以便 AWS Glue 通过五个(或更少)查询读取您的数据。

'hashpartitions': '5'