ItemBatcher (Peta) - AWS Step Functions

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

ItemBatcher (Peta)

Mengelola status dan mengubah data

ItemBatcherBidang adalah objek JSON, yang menentukan untuk memproses sekelompok item dalam eksekusi alur kerja anak tunggal. Gunakan batching saat memproses file CSV besar atau array JSON, atau kumpulan besar objek Amazon S3.

Contoh berikut menunjukkan sintaks ItemBatcher bidang. Dalam sintaks berikut, jumlah maksimum item yang harus diproses oleh setiap eksekusi alur kerja anak diatur ke 100.

{ "ItemBatcher": { "MaxItemsPerBatch": 100 } }

Secara default, setiap item dalam kumpulan data diteruskan sebagai input ke eksekusi alur kerja anak individu. Misalnya, asumsikan Anda menentukan file JSON sebagai masukan yang berisi array berikut:

[ { "verdict": "true", "statement_date": "6/11/2008", "statement_source": "speech" }, { "verdict": "false", "statement_date": "6/7/2022", "statement_source": "television" }, { "verdict": "true", "statement_date": "5/18/2016", "statement_source": "news" }, ... ]

Untuk input yang diberikan, setiap eksekusi alur kerja anak menerima item array sebagai inputnya. Contoh berikut menunjukkan masukan eksekusi alur kerja anak:

{ "verdict": "true", "statement_date": "6/11/2008", "statement_source": "speech" }

Untuk membantu mengoptimalkan kinerja dan biaya pekerjaan pemrosesan Anda, pilih ukuran batch yang menyeimbangkan jumlah item terhadap waktu pemrosesan item. Jika Anda menggunakan batching, Step Functions menambahkan item ke array Items. Kemudian meneruskan array sebagai input ke setiap eksekusi alur kerja anak. Contoh berikut menunjukkan batch dari dua item yang diteruskan sebagai masukan ke eksekusi alur kerja anak:

{ "Items": [ { "verdict": "true", "statement_date": "6/11/2008", "statement_source": "speech" }, { "verdict": "false", "statement_date": "6/7/2022", "statement_source": "television" } ] }
Tip

Untuk mempelajari lebih lanjut tentang menggunakan ItemBatcher bidang dalam alur kerja Anda, coba tutorial dan lokakarya berikut:

Bidang untuk menentukan pengelompokan item

Untuk mengelompokkan item, tentukan jumlah maksimum item yang akan dikumpulkan, ukuran batch maksimum, atau keduanya. Anda harus menentukan salah satu nilai ini ke item batch.

Maks item per batch

Menentukan jumlah maksimum item yang setiap proses eksekusi alur kerja anak. Penerjemah membatasi jumlah item yang dikumpulkan dalam Items array ke nilai ini. Jika Anda menentukan nomor dan ukuran batch, penerjemah mengurangi jumlah item dalam batch untuk menghindari melebihi batas ukuran batch yang ditentukan.

Jika Anda tidak menentukan nilai ini tetapi memberikan nilai untuk ukuran batch maksimum, Step Functions akan memproses sebanyak mungkin item dalam setiap eksekusi alur kerja anak tanpa melebihi ukuran batch maksimum dalam byte.

Misalnya, bayangkan Anda menjalankan eksekusi dengan file JSON input yang berisi 1130 node. Jika Anda menentukan nilai item maksimum untuk setiap batch 100, Step Functions akan membuat 12 batch. Dari jumlah tersebut, 11 batch berisi 100 item masing-masing, sedangkan batch kedua belas berisi 30 item yang tersisa.

Atau, Anda dapat menentukan item maksimum untuk setiap batch sebagai jalur referensi ke pasangan nilai kunci yang ada di masukan status Peta Terdistribusi Anda. Jalur ini harus menyelesaikan ke bilangan bulat positif.

Misalnya, diberikan input berikut:

{ "maxBatchItems": 500 }

Anda dapat menentukan jumlah maksimum item yang akan dikumpulkan menggunakan jalur referensi (JSONPath hanya) sebagai berikut:

{ ... "Map": { "Type": "Map", "MaxConcurrency": 2000, "ItemBatcher": { "MaxItemsPerBatchPath": "$.maxBatchItems" } ... ... } }

Untuk status JSONataberbasis, Anda juga dapat memberikan JSONata ekspresi yang mengevaluasi ke bilangan bulat positif.

penting

Anda dapat menentukan salah satu MaxItemsPerBatch atau MaxItemsPerBatchPath (JSONPath only) sub-bidang, tetapi tidak keduanya.

Maks KiB per batch

Menentukan ukuran maksimum batch dalam byte, hingga 256 KiB. Jika Anda menentukan nomor dan ukuran batch maksimum, Step Functions mengurangi jumlah item dalam batch untuk menghindari melebihi batas ukuran batch yang ditentukan.

Atau, Anda dapat menentukan ukuran batch maksimum sebagai jalur referensi ke pasangan nilai kunci yang ada di masukan status Peta Terdistribusi Anda. Jalur ini harus menyelesaikan ke bilangan bulat positif.

catatan

Jika Anda menggunakan batching dan tidak menentukan ukuran batch maksimum, penerjemah memproses sebanyak mungkin item yang dapat diproses hingga 256 KiB di setiap eksekusi alur kerja anak.

Misalnya, diberikan input berikut:

{ "batchSize": 131072 }

Anda dapat menentukan ukuran batch maksimum menggunakan jalur referensi sebagai berikut:

{ ... "Map": { "Type": "Map", "MaxConcurrency": 2000, "ItemBatcher": { "MaxInputBytesPerBatchPath": "$.batchSize" } ... ... } }

Untuk status JSONataberbasis, Anda juga dapat memberikan JSONata ekspresi yang mengevaluasi ke bilangan bulat positif.

penting

Anda dapat menentukan sub-bidang MaxInputBytesPerBatch atau MaxInputBytesPerBatchPath (JSONPath hanya), tetapi tidak keduanya.

Masukan Batch

Secara opsional, Anda juga dapat menentukan input JSON tetap untuk disertakan dalam setiap batch yang diteruskan ke setiap eksekusi alur kerja anak. Step Functions menggabungkan input ini dengan input untuk setiap eksekusi alur kerja anak individu. Misalnya, diberikan masukan tetap berikut dari tanggal pemeriksaan fakta pada array item:

"ItemBatcher": { "BatchInput": { "factCheck": "December 2022" } }

Setiap eksekusi alur kerja anak menerima yang berikut ini sebagai masukan:

{ "BatchInput": { "factCheck": "December 2022" }, "Items": [ { "verdict": "true", "statement_date": "6/11/2008", "statement_source": "speech" }, { "verdict": "false", "statement_date": "6/7/2022", "statement_source": "television" }, ... ] }

Untuk status JSONataberbasis, Anda dapat memberikan JSONata ekspresi langsung ke BatchInput, atau menggunakan JSONata ekspresi di dalam objek atau array JSON.