从 JDBC 表并行读取
您可以设置 JDBC 表的属性,以使 AWS Glue 并行读取数据。当您设置某些属性时,您可以指示 AWS Glue 对数据的逻辑分区运行并行 SQL 查询。您可以通过设置哈希字段或哈希表达式来控制分区。您还可以控制用于访问您的数据的并行读取的数量。
并行读取 JDBC 表是一种可以提高性能的优化技术。要详细了解确定何时适合使用这种技术的过程,请参阅《AWS 规范性指南》中“优化 AWS Glue for Apache Spark 作业性能的最佳实践”指南中的 减少数据扫描量。
要启用并行读取,可在表结构的参数字段中设置键值对。使用 JSON 表示法为表的参数字段设置值。有关编辑表属性的更多信息,请参阅 查看和管理表详细信息。当您调用 ETL(提取、转换和加载)方法 create_dynamic_frame_from_options
和 create_dynamic_frame_from_catalog
时,您也可以启用并行读取。有关在这些方法中指定选项的更多信息,请参阅 from_options 和 from_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'