Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menggunakan format JSON di AWS Glue
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 JSON, dokumen ini memperkenalkan Anda ke fitur yang tersedia untuk menggunakan data Anda di Glue. AWS
AWS Glue mendukung menggunakan format JSON. Format ini mewakili struktur data dengan bentuk yang konsisten tetapi konten fleksibel, yang tidak berbasis baris atau kolom. JSON didefinisikan oleh standar paralel yang dikeluarkan oleh beberapa otoritas, salah satunya adalah ECMA-404. Untuk pengenalan format oleh sumber yang sering direferensikan, lihat Memperkenalkan JSON
Anda dapat menggunakan AWS Glue untuk membaca file JSON dari Amazon S3, bzip
serta file JSON gzip
terkompresi. Anda mengonfigurasi perilaku kompresi pada Parameter koneksi S3 alih-alih dalam konfigurasi yang dibahas di halaman ini.
Baca | Tulis | Streaming dibaca | Kelompokkan file kecil | Bookmark tugas |
---|---|---|---|---|
Didukung | Didukung | Didukung | Didukung | Didukung |
Contoh: Baca file atau folder JSON dari S3
Prasyarat: Anda akan memerlukan jalur S3 (s3path
) ke file atau folder JSON yang ingin Anda baca.
Konfigurasi: Dalam opsi fungsi Anda, tentukanformat="json"
. Dalam Andaconnection_options
, gunakan paths
kunci untuk menentukan Andas3path
. Anda dapat lebih lanjut mengubah bagaimana operasi baca Anda akan melintasi s3 dalam opsi koneksi, berkonsultasi untuk detailnya. Referensi opsi koneksi Amazon S3 Anda dapat mengonfigurasi bagaimana pembaca menafsirkan file JSON di file Anda. format_options
Untuk detailnya, lihat Referensi Konfigurasi JSON.
Berikut skrip AWS Glue ETL menunjukkan proses membaca file JSON atau folder dari S3:
Contoh: Tulis file dan folder JSON ke S3
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, tentukanformat="json"
. Dalam Andaconnection_options
, gunakan paths
kunci untuk menentukans3path
. 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 Anda dapat mengonfigurasi bagaimana penulis menafsirkan file JSON di file Anda. format_options
Untuk detailnya, lihat Referensi Konfigurasi JSON.
Berikut skrip AWS Glue ETL menunjukkan proses penulisan file JSON atau folder dari S3:
Referensi konfigurasi Json
Anda dapat menggunakan nilai format_options
berikut dengan format="json"
:
-
jsonPath
— JsonPathEkspresi yang mengidentifikasi objek yang akan dibaca ke dalam catatan. Hal ini sangat berguna ketika sebuah file berisi catatan bersarang di dalam array luar. Misalnya, JsonPath ekspresi berikut menargetkan id
bidang objek JSON.format="json", format_options={"jsonPath": "$.id"}
multiLine
— Nilai Boolean yang menentukan apakah satu catatan dapat memiliki panjang hingga beberapa baris. Hal ini dapat terjadi ketika bidang berisi karakter baris baru yang dikutip. Anda harus menetapkan opsi ini ke"true"
jika ada catatan yang mencakup beberapa baris. Nilai default-nya adalah"false"
, yang memungkinkan untuk pemecahan file yang lebih agresif selama penguraian.-
optimizePerformance
— Nilai Boolean yang menentukan apakah akan menggunakan pembaca SIMD JSON tingkat lanjut bersama dengan format memori kolumnar berbasis Apache Arrow. Hanya tersedia di AWS Glue 3.0. Tidak kompatibel denganmultiLine
ataujsonPath
. Menyediakan salah satu dari opsi tersebut akan menginstruksikan AWS Glue untuk kembali ke pembaca standar. -
withSchema
— Nilai String yang menentukan skema tabel dalam format yang dijelaskan dalam. Tentukan skema XMLnya secara manual Hanya digunakan denganoptimizePerformance
saat membaca dari koneksi non-Katalog.
Menggunakan pembaca SIMD JSON vektor dengan format kolom Apache Arrow
AWS Glueversi 3.0 menambahkan pembaca vektor untuk data JSON. Ini melakukan 2x lebih cepat dalam kondisi tertentu, dibandingkan dengan pembaca standar. Pembaca ini dilengkapi dengan batasan tertentu yang harus diperhatikan pengguna sebelum digunakan, didokumentasikan di bagian ini.
Untuk menggunakan pembaca yang dioptimalkan, atur "optimizePerformance"
ke True di properti format_options
or table. Anda juga perlu menyediakan withSchema
kecuali membaca dari katalog. withSchema
mengharapkan masukan seperti yang dijelaskan dalam Tentukan skema XMLnya secara manual
// Read from S3 data source glueContext.create_dynamic_frame.from_options( connection_type = "s3", connection_options = {"paths": ["s3://
s3path
"]}, format = "json", format_options={ "optimizePerformance": True, "withSchema":SchemaString
}) // Read from catalog table glueContext.create_dynamic_frame.from_catalog( database = database, table_name = table, additional_options = { // The vectorized reader for JSON can read your schema from a catalog table property. "optimizePerformance": True, })
Untuk informasi lebih lanjut tentang bangunan a SchemaString
di perpustakaan AWS Glue, lihatPySpark jenis ekstensi.
Keterbatasan untuk pembaca CSV vektor
Perhatikan batasan berikut:
Elemen JSON dengan objek bersarang atau nilai array tidak didukung. Jika disediakan, AWS Glue akan kembali ke pembaca standar.
Skema harus disediakan, baik dari Katalog atau dengan
withSchema
.Tidak kompatibel dengan
multiLine
ataujsonPath
. Menyediakan salah satu dari opsi tersebut akan menginstruksikan AWS Glue untuk kembali ke pembaca standar.Menyediakan catatan masukan yang tidak sesuai dengan skema masukan akan menyebabkan pembaca gagal.
Catatan kesalahan tidak akan dibuat.
File JSON dengan karakter multi-byte (seperti karakter Jepang atau China) tidak didukung.