

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Partitionnement pour les entités non ODP
<a name="sap-odata-non-odp-entities-partitioning"></a>

Dans Apache Spark, le partitionnement fait référence à la manière dont les données sont divisées et distribuées entre les composants master d’un cluster pour un traitement parallèle. Chaque partition est un bloc logique de données qui peut être traité indépendamment par une tâche. Le partitionnement est un concept fondamental de Spark qui a un impact direct sur les performances, l'évolutivité et l'utilisation des ressources. AWS Glue les jobs utilisent le mécanisme de partitionnement de Spark pour diviser l'ensemble de données en petits morceaux (partitions) qui peuvent être traités en parallèle sur les nœuds de travail du cluster. Notez que le partitionnement n’est pas applicable aux entités ODP.

Pour plus de détails, consultez [AWS Glue Spark et PySpark jobs](https://docs.aws.amazon.com/glue/latest/dg/spark_and_pyspark.html).

**Conditions préalables**

Un objet SAP OData dont vous souhaitez lire un extrait. Vous aurez besoin du object/EntitySet nom. Par exemple : ` /sap/opu/odata/sap/API_SALES_ORDER_SRV/A_SalesOrder `.

**Exemple**

```
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)
```

## Requêtes de partitionnement
<a name="sap-odata-partitioning-queries"></a>

### Partitionnement basé sur les champs
<a name="sap-odata-field-based-partitioning"></a>

Vous pouvez indiquer les options Spark supplémentaires `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` et `NUM_PARTITIONS` si vous souhaitez utiliser la simultanéité dans Spark. Avec ces paramètres, la requête d’origine serait divisée en `NUM_PARTITIONS` nombres de sous-requêtes pouvant être exécutées simultanément par les tâches Spark. Les nombres entiers, les dates et DateTime les champs prennent en charge le partitionnement basé sur les champs dans le connecteur SAP. OData 
+ `PARTITION_FIELD` : le nom du champ à utiliser pour partitionner la requête.
+ `LOWER_BOUND` : une valeur limite inférieure inclusive du champ de partition choisi.

   Pour tout champ dont le type de données est DateTime, le format d'horodatage Spark utilisé dans les requêtes SQL Spark est accepté.

  Exemples de valeurs valides : `"2000-01-01T00:00:00.000Z"` 
+ `UPPER_BOUND` : une valeur limite supérieure exclusive du champ de partition choisi.
+ `NUM_PARTITIONS` : nombre de partitions.
+ `PARTITION_BY` : le type de partitionnement à effectuer, `FIELD` à transmettre en cas de partitionnement basé sur des champs.

**Exemple**

```
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)
```

### Partitionnement basé sur des enregistrements
<a name="sap-odata-record-based-partitioning"></a>

La requête d’origine serait divisée en `NUM_PARTITIONS` nombres de sous-requêtes qui peuvent être exécutées simultanément par les tâches Spark.

Le partitionnement basé sur les enregistrements n'est pris en charge que pour les entités non ODP, car la pagination dans les entités ODP est prise en charge par le jeton suivant. token/skip 
+ `PARTITION_BY` : le type de partitionnement à effectuer. `COUNT` doit être transmis en cas de partitionnement basé sur des enregistrements.

**Exemple**

```
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)
```

# Restrictions/alertes
<a name="sap-odata-limitations"></a>
+ Les entités ODP ne sont pas compatibles avec le partitionnement basé sur les enregistrements car la pagination est gérée à l'aide d'un jeton de saut. token/delta Par conséquent, pour le partitionnement basé sur les enregistrements, la valeur par défaut de maxConcurrency est définie sur « null », quelle que soit la saisie de l’utilisateur.
+ Lorsqu’une limite et une partition sont appliquées, la limite a priorité sur la partition.