非 ODP 实体的分区 - Amazon Glue
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

非 ODP 实体的分区

在 Apache Spark 中,分区是指在集群中的 Worker 节点之间划分和分配数据以实现并行处理的方式。每个分区都是一个逻辑数据块,可以通过任务独立处理。分区是 Spark 中的一个基本概念,它直接影响性能、可扩展性和资源利用率。Amazon Glue 作业使用 Spark 的分区机制将数据集划分为较小的块(分区),从而可以在集群的 Worker 节点上并行处理。请注意,分区不适用于 ODP 实体。

有关更多详细信息,请参阅 Amazon Glue Spark 和 PySpark 作业

先决条件

您要从中读取内容的 SAP OData 对象。您将需要对象/实体集名称,例如 /sap/opu/odata/sap/API_SALES_ORDER_SRV/A_SalesOrder

示例

sapodata_read = glueContext.create_dynamic_frame.from_options( connection_type="SAPOData", connection_options={ "connectionName": "connectionName", "ENTITY_NAME": "/sap/opu/odata/sap/API_SALES_ORDER_SRV/A_SalesOrder" }, transformation_ctx=key)

对查询进行分区

基于字段的分区

如果您想在 Spark 中利用并发,可以提供其他 Spark 选项:PARTITION_FIELDLOWER_BOUNDUPPER_BOUNDNUM_PARTITIONS。使用这些参数,原始查询将被拆分为 NUM_PARTITIONS 个子查询,这些子查询可以由 Spark 任务同时执行。整数、日期和日期时间字段支持 SAP OData 连接器中基于字段的分区。

  • PARTITION_FIELD:用于对查询进行分区的字段的名称。

  • LOWER_BOUND:所选分区字段的包含下限值。

    对于任何数据类型为 DateTime 的字段,接受 Spark SQL 查询中使用的 Spark 时间戳格式。

    有效值示例:"2000-01-01T00:00:00.000Z"

  • UPPER_BOUND:所选分区字段的排除上限值。

  • NUM_PARTITIONS:分区的数量。

  • PARTITION_BY:要执行的类型分区;如果是基于字段的分区,则传递 FIELD

示例

sapodata= glueContext.create_dynamic_frame.from_options( connection_type="sapodata", connection_options={ "connectionName": "connectionName", "ENTITY_NAME": "/sap/opu/odata/sap/SEPM_HCM_SCENARIO_SRV/EmployeeSet", "PARTITION_FIELD": "validStartDate" "LOWER_BOUND": "2000-01-01T00:00:00.000Z" "UPPER_BOUND": "2020-01-01T00:00:00.000Z" "NUM_PARTITIONS": "10", "PARTITION_BY": "FIELD" }, transformation_ctx=key)

基于记录的分区

原始查询将被拆分为 NUM_PARTITIONS 个子查询,这些子查询可以由 Spark 任务同时执行。

只有非 ODP 实体支持基于记录的分区,因为 ODP 实体中的分页通过下一个令牌/跳过令牌支持。

  • PARTITION_BY:要执行的类型分区。如果是基于记录的分区,则传递 COUNT

示例

sapodata= glueContext.create_dynamic_frame.from_options( connection_type="sapodata", connection_options={ "connectionName": "connectionName", "ENTITY_NAME": "/sap/opu/odata/sap/SEPM_HCM_SCENARIO_SRV/EmployeeSet", "NUM_PARTITIONS": "10", "PARTITION_BY": "COUNT" }, transformation_ctx=key)