Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Bagian ini menguraikan cara menentukan nilai parameter untukcqlsh COPY
FROM
. cqlsh COPY FROM
Perintah membaca CSV file yang Anda siapkan sebelumnya dan menyisipkan data ke Amazon CQL Keyspaces menggunakan. Perintah membagi baris dan mendistribusikan INSERT
operasi di antara satu set pekerja. Setiap pekerja membuat koneksi dengan Amazon Keyspaces dan INSERT
mengirimkan permintaan di sepanjang saluran ini.
cqlsh COPY
Perintah tidak memiliki logika internal untuk mendistribusikan pekerjaan secara merata di antara para pekerjanya. Namun, Anda dapat mengonfigurasinya secara manual untuk memastikan bahwa pekerjaan didistribusikan secara merata. Mulailah dengan meninjau parameter cqlsh kunci ini:
-
DELIMITER— Jika Anda menggunakan pembatas selain koma, Anda dapat mengatur parameter ini, yang defaultnya koma.
-
INGESTRATE— Jumlah target baris yang
cqlsh COPY FROM
mencoba untuk memproses per detik. Jika tidak disetel, defaultnya menjadi 100.000. -
NUMPROCESSES— Jumlah proses pekerja anak yang dibuat cqlsh untuk tugas.
COPY FROM
Maksimum untuk pengaturan ini adalah 16, defaultnya adalahnum_cores - 1
, di mananum_cores
jumlah inti pemrosesan pada host yang menjalankan cqlsh. -
MAXBATCHSIZE— Ukuran batch menentukan jumlah maksimal baris yang dimasukkan ke dalam tabel tujuan dalam satu batch. Jika tidak disetel, cqlsh menggunakan batch 20 baris yang disisipkan.
-
CHUNKSIZE— Ukuran unit kerja yang diteruskan ke pekerja anak. Secara default, ini diatur ke 5.000.
-
MAXATTEMPTS— Jumlah maksimum kali untuk mencoba kembali potongan pekerja yang gagal. Setelah upaya maksimum tercapai, catatan yang gagal ditulis ke CSV file baru yang dapat Anda jalankan lagi nanti setelah menyelidiki kegagalan.
Tetapkan INGESTRATE
berdasarkan jumlah WCUs yang Anda berikan ke tabel tujuan target. INGESTRATE
cqlsh COPY FROM
Perintah bukanlah batas—ini adalah rata-rata target. Ini berarti dapat (dan sering) meledak di atas angka yang Anda tetapkan. Untuk memungkinkan ledakan dan memastikan bahwa kapasitas yang cukup tersedia untuk menangani permintaan pemuatan data, atur INGESTRATE
ke 90% dari kapasitas tulis tabel.
INGESTRATE = WCUs * .90
Selanjutnya, atur NUMPROCESSES
parameter menjadi sama dengan satu kurang dari jumlah core pada sistem Anda. Untuk mengetahui berapa jumlah core sistem Anda, Anda dapat menjalankan kode berikut.
python -c "import multiprocessing; print(multiprocessing.cpu_count())"
Untuk tutorial ini, kami menggunakan nilai berikut.
NUMPROCESSES = 4
Setiap proses membuat pekerja, dan setiap pekerja membuat koneksi ke Amazon Keyspaces. Amazon Keyspaces dapat mendukung hingga 3.000 CQL permintaan per detik pada setiap koneksi. Ini berarti Anda harus memastikan bahwa setiap pekerja memproses kurang dari 3.000 permintaan per detik.
Seperti halnyaINGESTRATE
, pekerja sering meledak di atas angka yang Anda tetapkan dan tidak dibatasi oleh detik jam. Oleh karena itu, untuk memperhitungkan semburan, atur parameter cqlsh Anda untuk menargetkan setiap pekerja untuk memproses 2.500 permintaan per detik. Untuk menghitung jumlah pekerjaan yang didistribusikan kepada pekerja, gunakan pedoman berikut.
-
Bagilah
INGESTRATE
denganNUMPROCESSES
. -
Jika
INGESTRATE
/NUMPROCESSES
> 2.500, turunkanINGESTRATE
untuk membuat rumus ini benar.
INGESTRATE / NUMPROCESSES <= 2,500
Sebelum Anda mengonfigurasi pengaturan untuk mengoptimalkan unggahan data sampel kami, mari tinjau pengaturan cqlsh
default dan lihat bagaimana penggunaannya memengaruhi proses pengunggahan data. Karena cqlsh COPY FROM
menggunakan CHUNKSIZE
untuk membuat potongan pekerjaan (INSERT
pernyataan) untuk didistribusikan kepada pekerja, pekerjaan tidak secara otomatis didistribusikan secara merata. Beberapa pekerja mungkin duduk diam, tergantung pada INGESTRATE
pengaturannya.
Untuk mendistribusikan pekerjaan secara merata di antara para pekerja dan menjaga setiap pekerja pada tingkat optimal 2.500 permintaan per detik, Anda harus mengatur CHUNKSIZE
MAXBATCHSIZE
,, dan INGESTRATE
dengan mengubah parameter input. Untuk mengoptimalkan pemanfaatan lalu lintas jaringan selama pemuatan data, pilih nilai MAXBATCHSIZE
yang mendekati nilai maksimum 30. Dengan mengubah CHUNKSIZE
ke 100 dan MAXBATCHSIZE
ke 25, 10.000 baris tersebar merata di antara empat pekerja (10.000/2500 = 4).
Contoh kode berikut menggambarkan hal ini.
INGESTRATE = 10,000
NUMPROCESSES = 4
CHUNKSIZE = 100
MAXBATCHSIZE. = 25
Work Distribution:
Connection 1 / Worker 1 : 2,500 Requests per second
Connection 2 / Worker 2 : 2,500 Requests per second
Connection 3 / Worker 3 : 2,500 Requests per second
Connection 4 / Worker 4 : 2,500 Requests per second
Untuk meringkas, gunakan rumus berikut saat mengatur cqlsh COPY FROM
parameter:
-
INGESTRATE= write_capacity_units * .90
-
NUMPROCESSES= num_cores -1 (default)
-
INGESTRATE/NUMPROCESSES= 2.500 (Ini harus pernyataan yang benar.)
-
MAXBATCHSIZE= 30 (Default ke 20. Amazon Keyspaces menerima batch hingga 30.)
-
CHUNKSIZE = (INGESTRATE / NUMPROCESSES) / MAXBATCHSIZE
Sekarang Anda telah menghitungNUMPROCESSES
,,INGESTRATE
, danCHUNKSIZE
, Anda siap untuk memuat data Anda.