

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Menggunakan format ORC di AWS Glue
<a name="aws-glue-programming-etl-format-orc-home"></a>

AWS Glue mengambil data dari sumber dan menulis data ke target yang disimpan dan diangkut dalam berbagai format data. Jika data Anda disimpan atau diangkut dalam format data ORC, dokumen ini memperkenalkan fitur yang tersedia untuk menggunakan data Anda di Glue. AWS 

AWS Glue mendukung menggunakan format ORC. Format ini adalah format data berbasis kolom yang berorientasi kinerja. Untuk pengenalan format oleh otoritas standar lihat, [Apache Orc](https://orc.apache.org/docs/).

Anda dapat menggunakan AWS Glue untuk membaca file ORC dari Amazon S3 dan dari sumber streaming serta menulis file ORC ke Amazon S3. Anda dapat membaca dan menulis `bzip` dan `gzip` mengarsipkan yang berisi file ORC dari S3. Anda mengonfigurasi perilaku kompresi pada [Parameter koneksi S3](aws-glue-programming-etl-connect-s3-home.md#aws-glue-programming-etl-connect-s3) alih-alih dalam konfigurasi yang dibahas di halaman ini.

Tabel berikut menunjukkan operasi AWS Glue umum mana yang mendukung opsi format ORC.


| Baca | Tulis | Streaming dibaca | Kelompokkan file kecil | Bookmark tugas | 
| --- | --- | --- | --- | --- | 
| Didukung | Didukung | Didukung | Tidak didukung | Didukung \$1 | 

\$1 Didukung dalam AWS Glue versi 1.0 \$1

## Contoh: Baca file atau folder ORC dari S3
<a name="aws-glue-programming-etl-format-orc-read"></a>

**Prasyarat:** Anda akan memerlukan jalur S3 (`s3path`) ke file atau folder ORC yang ingin Anda baca. 

**Konfigurasi:** Dalam opsi fungsi Anda, tentukan`format="orc"`. Dalam Anda`connection_options`, gunakan `paths` kunci untuk menentukan Anda`s3path`. Anda dapat mengonfigurasi bagaimana pembaca berinteraksi dengan S3 di file. `connection_options` Untuk detailnya, lihat Jenis dan opsi koneksi untuk ETL di AWS Glue:[Referensi opsi koneksi Amazon S3](aws-glue-programming-etl-connect-s3-home.md#aws-glue-programming-etl-connect-s3).

 Berikut skrip AWS Glue ETL menunjukkan proses membaca file ORC atau folder dari S3: 

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

Untuk contoh ini, gunakan metode [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"
)
```

Anda juga dapat menggunakan DataFrames dalam script (`pyspark.sql.DataFrame`).

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

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

Untuk contoh ini, gunakan operasi [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()
  }
}
```

Anda juga dapat menggunakan DataFrames dalam script (`pyspark.sql.DataFrame`).

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

------

## Contoh: Tulis file dan folder ORC ke S3
<a name="aws-glue-programming-etl-format-orc-write"></a>

**Prasyarat:** Anda akan memerlukan initialized DataFrame () atau ()`dataFrame`. DynamicFrame `dynamicFrame` Anda juga akan membutuhkan jalur output S3 yang Anda harapkan,`s3path`. 

**Konfigurasi:** Dalam opsi fungsi Anda, tentukan`format="orc"`. Dalam opsi koneksi Anda, gunakan `paths` kunci untuk menentukan`s3path`. Anda selanjutnya dapat mengubah cara penulis berinteraksi dengan S3 di. `connection_options` Untuk detailnya, lihat Opsi format data untuk input dan output ETL di Glue AWS :. [Referensi opsi koneksi Amazon S3](aws-glue-programming-etl-connect-s3-home.md#aws-glue-programming-etl-connect-s3) Contoh kode berikut menunjukkan proses: 

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

Untuk contoh ini, gunakan metode [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"
    }
)
```

Anda juga dapat menggunakan DataFrames dalam script (`pyspark.sql.DataFrame`).

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

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

Untuk contoh ini, gunakan metode [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)
  }
}
```

Anda juga dapat menggunakan DataFrames dalam script (`pyspark.sql.DataFrame`).

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

------

## Referensi konfigurasi ORC
<a name="aws-glue-programming-etl-format-orc-reference"></a>

Tidak ada nilai `format_options` untuk `format="orc"`. Namun demikian, setiap pilihan yang diterima oleh kode SparkSQL yang mendasari dapat diteruskan ke sana dengan cara parameter peta `connection_options`. 