

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.

# Utilisation du format ORC dans Glue AWS
<a name="aws-glue-programming-etl-format-orc-home"></a>

AWS Glue récupère les données des sources et écrit les données sur des cibles stockées et transportées dans différents formats de données. Si vos données sont stockées ou transportées au format ORC, ce document présente les fonctionnalités disponibles pour utiliser vos données dans AWS Glue.

AWS Glue supporte l'utilisation du format ORC. Ce format est un format de données en colonnes, orienté vers la performance. Pour accéder à une présentation du format par l'autorité standard, consultez [Apache Orc](https://orc.apache.org/docs/).

Vous pouvez utiliser AWS Glue pour lire des fichiers ORC depuis Amazon S3 et depuis des sources de streaming, ainsi que pour écrire des fichiers ORC sur Amazon S3. Vous pouvez lire et écrire des archives `bzip` et `gzip` contenant des fichiers CSV provenant de S3. Vous configurez le comportement de compression sur [Paramètres de connexion S3](aws-glue-programming-etl-connect-s3-home.md#aws-glue-programming-etl-connect-s3) plutôt que dans la configuration décrite sur cette page.

Le tableau suivant indique quelles opérations AWS Glue courantes prennent en charge l'option de format ORC.


| Lecture | Écrire | Lecture en streaming | Groupement des petits fichiers | Signets de tâche | 
| --- | --- | --- | --- | --- | 
| Pris en charge | Pris en charge | Pris en charge | Non pris en charge | Pris en charge\$1 | 

\$1 Supporté dans la version 1.0\$1 de AWS Glue

## Exemple : lecture de fichiers ou de dossiers ORC à partir de S3
<a name="aws-glue-programming-etl-format-orc-read"></a>

** Prérequis :** vous aurez besoin des chemins S3 (`s3path`) vers des fichiers ou dossiers ORC que vous souhaitez lire. 

**Configuration :** dans vos options de fonction, spécifiez `format="orc"`. Dans vos `connection_options`, utilisez la clé `paths` pour spécifier votre `s3path`. Vous pouvez configurer la manière dont le lecteur interagit avec S3 dans les `connection_options`. Pour plus de détails, voir Types de connexion et options pour l'ETL dans AWS Glue :[Référence des options de connexion Amazon S3](aws-glue-programming-etl-connect-s3-home.md#aws-glue-programming-etl-connect-s3).

 Le script AWS Glue ETL suivant montre le processus de lecture de fichiers ou de dossiers ORC depuis S3 : 

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

Pour cet exemple, utilisez la méthode [create\$1dynamic\$1frame.from\$1options](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"
)
```

Vous pouvez également l'utiliser DataFrames dans un script (`pyspark.sql.DataFrame`).

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

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

Pour cet exemple, utilisez l'opération [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()
  }
}
```

Vous pouvez également l'utiliser DataFrames dans un script (`pyspark.sql.DataFrame`).

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

------

## Exemple : écriture de fichiers et dossiers ORC dans S3
<a name="aws-glue-programming-etl-format-orc-write"></a>

**Prérequis :** Vous aurez besoin d'un initialisé DataFrame (`dataFrame`) ou DynamicFrame (`dynamicFrame`). Vous aurez également besoin de votre chemin de sortie S3, `s3path`. 

**Configuration :** dans vos options de fonction, spécifiez `format="orc"`. Dans vos options de connexion, utilisez`paths`touche à spécifier`s3path`. Vous pouvez modifier davantage la manière dont le scripteur interagit avec S3 dans les `connection_options`. Pour plus de détails, voir Options de format de données pour les entrées et sorties ETL dans AWS Glue :[Référence des options de connexion Amazon S3](aws-glue-programming-etl-connect-s3-home.md#aws-glue-programming-etl-connect-s3). L'exemple de code suivant montre le processus : 

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

Pour cet exemple, utilisez la méthode [write\$1dynamic\$1frame.from\$1options](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"
    }
)
```

Vous pouvez également l'utiliser DataFrames dans un script (`pyspark.sql.DataFrame`).

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

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

Pour cet exemple, utilisez la méthode [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)
  }
}
```

Vous pouvez également l'utiliser DataFrames dans un script (`pyspark.sql.DataFrame`).

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

------

## Référence de configuration ORC
<a name="aws-glue-programming-etl-format-orc-reference"></a>

Il n'y a aucune valeur `format_options` pour `format="orc"`. Cependant, les options acceptées par le code SparkSQL sous-jacent peuvent lui être transmises au moyen du paramètre de carte `connection_options`. 