Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Pisahkan pecahan
Untuk membagi pecahan di Amazon Kinesis Data Streams, Anda perlu menentukan bagaimana nilai kunci hash dari pecahan induk harus didistribusikan kembali ke pecahan anak. Ketika Anda menambahkan catatan data ke aliran, data tersebut ditetapkan ke shard berdasarkan nilai kunci hash. Nilai kunci hash adalah hash
Nilai kunci hash yang mungkin untuk pecahan tertentu merupakan satu set bilangan bulat non-negatif yang berdekatan yang berurutan. Rentang kemungkinan nilai kunci hash ini diberikan sebagai berikut:
shard.getHashKeyRange().getStartingHashKey(); shard.getHashKeyRange().getEndingHashKey();
Saat Anda membagi pecahan, Anda menentukan nilai dalam rentang ini. Nilai kunci hash itu dan semua nilai kunci hash yang lebih tinggi didistribusikan ke salah satu pecahan anak. Semua nilai kunci hash yang lebih rendah didistribusikan ke pecahan anak lainnya.
Kode berikut menunjukkan operasi pemisahan pecahan yang mendistribusikan kembali kunci hash secara merata antara masing-masing pecahan anak, pada dasarnya membagi pecahan induk menjadi dua. Ini hanyalah salah satu cara yang mungkin untuk membagi pecahan induk. Anda dapat, misalnya, membagi pecahan sehingga sepertiga kunci bawah dari orang tua masuk ke satu pecahan anak dan dua pertiga atas kunci masuk ke pecahan anak lainnya. Namun, untuk banyak aplikasi, membelah pecahan menjadi dua adalah pendekatan yang efektif.
Kode mengasumsikan bahwa myStreamName menyimpan nama aliran Anda dan variabel objek shard memegang pecahan untuk dipecah. Mulailah dengan membuat instance splitShardRequest objek baru dan mengatur nama aliran dan ID pecahan.
SplitShardRequest splitShardRequest = new SplitShardRequest(); splitShardRequest.setStreamName(myStreamName); splitShardRequest.setShardToSplit(shard.getShardId());
Tentukan nilai kunci hash yang berada setengah jalan antara nilai terendah dan tertinggi di shard. Ini adalah nilai kunci hash awal untuk pecahan anak yang akan berisi bagian atas kunci hash dari pecahan induk. Tentukan nilai ini dalam setNewStartingHashKey metode. Anda hanya perlu menentukan nilai ini. Kinesis Data Streams secara otomatis mendistribusikan kunci hash di bawah nilai ini ke pecahan anak lainnya yang dibuat oleh pemisahan. Langkah terakhir adalah memanggil splitShard metode pada klien Kinesis Data Streams.
BigInteger startingHashKey = new BigInteger(shard.getHashKeyRange().getStartingHashKey()); BigInteger endingHashKey = new BigInteger(shard.getHashKeyRange().getEndingHashKey()); String newStartingHashKey = startingHashKey.add(endingHashKey).divide(new BigInteger("2")).toString(); splitShardRequest.setNewStartingHashKey(newStartingHashKey); client.splitShard(splitShardRequest);
Langkah pertama setelah prosedur ini ditunjukkan padaTunggu streaming menjadi aktif kembali.