

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Partizionamento per entità non ODP
<a name="sap-odata-non-odp-entities-partitioning"></a>

In Apache Spark, il partizionamento indica il modo in cui i dati vengono divisi e distribuiti tra i nodi worker in un cluster per l'elaborazione parallela. Ogni partizione è un blocco logico di dati che può essere elaborato indipendentemente da un'attività. Il partizionamento è un concetto fondamentale in Spark che influisce direttamente sulle prestazioni, sulla scalabilità e sull'utilizzo delle risorse. AWS Glue i job utilizzano il meccanismo di partizionamento di Spark per dividere il set di dati in blocchi più piccoli (partizioni) che possono essere elaborati in parallelo tra i nodi di lavoro del cluster. Il partizionamento non è applicabile alle entità ODP.

[Per maggiori dettagli, consulta Spark and jobs.AWS Glue PySpark ](https://docs.aws.amazon.com/glue/latest/dg/spark_and_pyspark.html)

**Prerequisiti**

Un oggetto SAP OData da cui vorresti leggere. Avrai bisogno del object/EntitySet nome. Ad esempio: ` /sap/opu/odata/sap/API_SALES_ORDER_SRV/A_SalesOrder `.

**Esempio**

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

## Query di partizionamento
<a name="sap-odata-partitioning-queries"></a>

### Partizionamento basato sul campo
<a name="sap-odata-field-based-partitioning"></a>

Puoi fornire le opzioni Spark aggiuntive `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` e `NUM_PARTITIONS` se desideri utilizzare la concorrenza in Spark. Con questi parametri, la query originale viene suddivisa in `NUM_PARTITIONS` query secondarie che possono essere eseguite contemporaneamente dalle attività Spark. Numero intero, Data e DateTime campi supportano il partizionamento basato sul campo nel connettore SAP. OData 
+ `PARTITION_FIELD`: il nome del campo da utilizzare per partizionare la query.
+ `LOWER_BOUND`: un valore limite inferiore inclusivo del campo di partizione scelto.

   Per qualsiasi campo il cui tipo di dati è DateTime, viene accettato il formato di timestamp Spark utilizzato nelle query SQL di Spark.

  Esempi di valori validi: `"2000-01-01T00:00:00.000Z"` 
+ `UPPER_BOUND`: un valore limite superiore esclusivo del campo di partizione scelto.
+ `NUM_PARTITIONS`: numero di partizioni.
+ `PARTITION_BY`: il tipo di partizionamento da eseguire, `FIELD` da passare in caso di partizionamento basato sul campo.

**Esempio**

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

### Partizionamento basato su record
<a name="sap-odata-record-based-partitioning"></a>

La query originale viene suddivisa in `NUM_PARTITIONS` query secondarie che possono essere eseguite contemporaneamente dalle attività Spark.

Il partizionamento basato sui record è supportato solo per le entità non ODP, poiché l'impaginazione nelle entità ODP è supportata tramite il token successivo. token/skip 
+ `PARTITION_BY`: il tipo di partizionamento da eseguire. `COUNT` è da passare in caso di partizionamento basato sul record.

**Esempio**

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

# Limitazioni/Callout
<a name="sap-odata-limitations"></a>
+ Le entità ODP non sono compatibili con il partizionamento basato su record poiché l'impaginazione viene gestita utilizzando il token skip. token/delta Di conseguenza, per il partizionamento basato su record, il valore predefinito per maxConcurrency è impostato su “null” indipendentemente dall'input dell'utente.
+ Quando vengono applicati sia il limite che la partizione, il limite ha la precedenza sul partizionamento.