Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Partitionierung für Nicht-ODP-Entitäten
In Apache Spark bezieht sich Partitionierung auf die Art, wie Daten aufgeteilt und auf die Worker-Knoten in einem Cluster zur Parallelverarbeitung verteilt werden. Jede Partition ist ein logischer Datenblock, der unabhängig von einer Aufgabe verarbeitet werden kann. Partitionierung ist ein grundlegendes Konzept in Spark, das sich direkt auf Leistung, Skalierbarkeit und Ressourcennutzung auswirkt. AWS Glue Jobs verwenden den Partitionierungsmechanismus von Spark, um den Datensatz in kleinere Blöcke (Partitionen) aufzuteilen, die parallel über die Worker-Knoten des Clusters verarbeitet werden können. Beachten Sie, dass die Partitionierung nicht für ODP-Entitäten gilt.
Weitere Informationen finden Sie unter AWS Glue Spark und Jobs. PySpark
Voraussetzungen
Ein OData SAP-Objekt, aus dem Sie lesen möchten. Sie benötigen den object/EntitySet Namen. Beispiel:
/sap/opu/odata/sap/API_SALES_ORDER_SRV/A_SalesOrder
.
Beispiel
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)
Partitionierung von Abfragen
Feldbasierte Partitionierung
Sie können die zusätzlichen Spark-Optionen PARTITION_FIELD,LOWER_BOUND, UPPER_BOUND und NUM_PARTITIONS angeben, wenn Sie Parallelität in Spark nutzen möchten. Mit diesen Parametern wird die ursprüngliche Abfrage in NUM_PARTITIONS Unterabfragen aufgeteilt, die von Spark-Aufgaben gleichzeitig ausgeführt werden können. Integer, Date und DateTime Felder unterstützen die feldbasierte Partitionierung im SAP-Konnektor. OData
PARTITION_FIELD: der Name des Feldes, das zur Partitionierung der Abfrage verwendet werden soll.LOWER_BOUND: ein inklusiver Untergrenzwert des ausgewählten Partitionsfelds.Für jedes Feld, dessen Datentyp ist DateTime, wird das in Spark-SQL-Abfragen verwendete Spark-Zeitstempelformat akzeptiert.
Beispiele für gültige Werte:
"2000-01-01T00:00:00.000Z"UPPER_BOUND: ein exklusiver Obergrenzwert des ausgewählten Partitionsfelds.NUM_PARTITIONS: Anzahl der Partitionen.PARTITION_BY: der Typ der durchzuführenden Partitionierung.FIELDwird im Falle einer feldbasierten Partitionierung übergeben.
Beispiel
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)
Datensatzbasierte Partitionierung
Die ursprüngliche Abfrage wurde in NUM_PARTITIONS Unterabfragen aufgeteilt, die von Spark-Aufgaben gleichzeitig ausgeführt werden können.
Die datensatzbasierte Partitionierung wird nur für Nicht-ODP-Entitäten unterstützt, da die Paginierung in ODP-Entitäten bis zum nächsten Token unterstützt wird. token/skip
PARTITION_BY: der Typ der durchzuführenden Partitionierung.COUNTwird im Falle einer datensatzbasierten Partitionierung übergeben.
Beispiel
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)