

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à.

# Utilizzo del formato ORC in AWS Glue
<a name="aws-glue-programming-etl-format-orc-home"></a>

AWS Glue recupera i dati dalle fonti e li scrive su destinazioni archiviate e trasportate in vari formati di dati. Se i dati vengono archiviati o trasportati nel formato dati ORC, questo documento presenta le funzionalità disponibili per l'utilizzo dei dati in Glue. AWS 

AWS Glue supporta l'utilizzo del formato ORC. Questo formato è un formato dati basato su colonne orientato alle prestazioni. Per un'introduzione al formato da parte dell'autorità degli standard, consulta [Apache Orc](https://orc.apache.org/docs/).

Puoi usare AWS Glue per leggere file ORC da Amazon S3 e da sorgenti di streaming, nonché scrivere file ORC su Amazon S3. Puoi leggere e scrivere archivi `bzip` e `gzip` contenenti file ORC da S3. Puoi configurare il comportamento di compressione sul [Parametri di connessione di S3](aws-glue-programming-etl-connect-s3-home.md#aws-glue-programming-etl-connect-s3) invece che nella configurazione discussa in questa pagina.

La tabella seguente mostra quali operazioni comuni di AWS Glue supportano l'opzione di formato ORC.


| Lettura | Scrittura | Lettura in streaming | Gruppo di file piccoli | Segnalibri di processo | 
| --- | --- | --- | --- | --- | 
| Supportata | Supportato | Supportata | Non supportato. | Supportato\* | 

\* Supportato nella versione AWS Glue 1.0\+

## Esempio: lettura di cartelle o file ORC da S3
<a name="aws-glue-programming-etl-format-orc-read"></a>

**Prerequisiti:** occorreranno i percorsi S3 (`s3path`) nelle cartelle o nei file ORC da leggere. 

**Configurazione:** nelle opzioni della funzione, specifica `format="orc"`. Nelle tue `connection_options`, utilizza la chiave `paths` per specificare `s3path`. Puoi configurare il modo in cui il reader interagisce con S3 in `connection_options`. Per i dettagli, vedi Tipi di connessione e opzioni per ETL in AWS Glue:[Indicazioni di riferimento alle opzioni di connessione ad Amazon S3](aws-glue-programming-etl-connect-s3-home.md#aws-glue-programming-etl-connect-s3).

 Il seguente script AWS Glue ETL mostra il processo di lettura di file o cartelle ORC da S3: 

------
#### [ Python ]

Per questo esempio, utilizzare il metodo [create\_dynamic\_frame.from\_options](aws-glue-api-crawler-pyspark-extensions-glue-context.md#aws-glue-api-crawler-pyspark-extensions-glue-context-create_dynamic_frame_from_options).

```
from pyspark.context import SparkContext
from awsglue.context import GlueContext

sc = SparkContext.getOrCreate()
glueContext = GlueContext(sc)

dynamicFrame = glueContext.create_dynamic_frame.from_options(
    connection_type="s3",
    connection_options={"paths": ["s3://{{s3path}}"]},
    format="orc"
)
```

Puoi anche usarlo DataFrames in uno script (). `pyspark.sql.DataFrame`

```
dataFrame = spark.read\
    .orc("s3://{{s3path}}")
```

------
#### [ Scala ]

Per questo esempio, utilizzate l'operazione [getSourceWithFormat](glue-etl-scala-apis-glue-gluecontext.md#glue-etl-scala-apis-glue-gluecontext-defs-getSourceWithFormat).

```
import com.amazonaws.services.glue.util.JsonOptions
import com.amazonaws.services.glue.GlueContext
import org.apache.spark.sql.SparkContext

object GlueApp {
  def main(sysArgs: Array[String]): Unit = {
    val spark: SparkContext = new SparkContext()
    val glueContext: GlueContext = new GlueContext(spark)

    val dynamicFrame = glueContext.getSourceWithFormat(
      connectionType="s3",
      format="orc",
      options=JsonOptions("""{"paths": ["s3://{{s3path}}"]}""")
    ).getDynamicFrame()
  }
}
```

È inoltre possibile utilizzare DataFrames in uno script (`pyspark.sql.DataFrame`).

```
val dataFrame = spark.read
    .orc("s3://{{s3path}}")
```

------

## Esempio: scrittura di cartelle e file ORC in S3
<a name="aws-glue-programming-etl-format-orc-write"></a>

**Prerequisiti:** è necessario un DataFrame (`dataFrame`) o DynamicFrame (`dynamicFrame`) inizializzato. È necessario anche del tuo percorso di output S3 previsto, `s3path`. 

**Configurazione:** nelle opzioni della funzione, specifica `format="orc"`. Nelle opzioni di connessione, usa la chiave `paths` per specificare `s3path`. È possibile modificare ulteriormente il modo in cui il writer interagisce con S3 nelle `connection_options`. Per i dettagli, vedi Opzioni di formato dei dati per ingressi e uscite ETL in AWS Glue:. [Indicazioni di riferimento alle opzioni di connessione ad Amazon S3](aws-glue-programming-etl-connect-s3-home.md#aws-glue-programming-etl-connect-s3) L'esempio di codice seguente mostra il processo: 

------
#### [ Python ]

Per questo esempio, utilizza il metodo [write\_dynamic\_frame.from\_options](aws-glue-api-crawler-pyspark-extensions-glue-context.md#aws-glue-api-crawler-pyspark-extensions-glue-context-write_dynamic_frame_from_options).

```
from pyspark.context import SparkContext
from awsglue.context import GlueContext

sc = SparkContext.getOrCreate()
glueContext = GlueContext(sc)

glueContext.write_dynamic_frame.from_options(
    frame={{dynamicFrame}},
    connection_type="s3",
    format="orc",
    connection_options={
        "path": "s3://{{s3path}}"
    }
)
```

Puoi anche usare DataFrames in uno script (). `pyspark.sql.DataFrame`

```
df.write.orc("s3://{{s3path}}/")
```

------
#### [ Scala ]

Per questo esempio, utilizzate il metodo [getSinkWithFormat](glue-etl-scala-apis-glue-gluecontext.md#glue-etl-scala-apis-glue-gluecontext-defs-getSinkWithFormat).

```
import com.amazonaws.services.glue.util.JsonOptions
import com.amazonaws.services.glue.{DynamicFrame, GlueContext}
import org.apache.spark.SparkContext

object GlueApp {
  def main(sysArgs: Array[String]): Unit = {
    val spark: SparkContext = new SparkContext()
    val glueContext: GlueContext = new GlueContext(spark)

    glueContext.getSinkWithFormat(
      connectionType="s3",
      options=JsonOptions("""{"path": "s3://{{s3path}}"}"""),
      format="orc"
    ).writeDynamicFrame({{dynamicFrame}})
  }
}
```

È inoltre possibile utilizzare DataFrames in uno script (`pyspark.sql.DataFrame`).

```
df.write.orc("s3://{{s3path}}/")
```

------

## Riferimento alla configurazione XML
<a name="aws-glue-programming-etl-format-orc-reference"></a>

Non ci sono valori di `format_options` per `format="orc"`. Tutte le opzioni accettate dal codice SparkSQL sottostante possono tuttavia essere passate tramite il parametro mappa `connection_options`. 