Java için Tablestore SDK, birden çok satır ekleyerek, güncelleyerek veya silerek çevrimdışı verileri içe aktarır ve her satır işleminin sonucunu döndürür.
Ön koşullar
Java için Tablestore SDK bileşenini yükleyin ve istemciyi başlatın.
Açıklama
Tek bir istekte birden fazla satır işlemi göndermek için bulkImport yöntemini çağırın. Sunucu her satırı bağımsız olarak işler ve satır bazında sonuçlar döndürür; bu sayede bir satırdaki hata diğer satırlardaki işlemleri etkilemez. Bu yöntem, büyük veri senaryolarında çevrimdışı toplu aktarımlar için tasarlanmıştır.
public BulkImportResponse bulkImport(BulkImportRequest bulkImportRequest) throws TableStoreException, ClientException
Aşağıdaki örnekte, tek bir toplu istekle bulk_import_demo tablosuna beş satır eklenir ve başarılı ile başarısız olan satır sayıları yazdırılır.
String tableName = "bulk_import_demo";
BulkImportRequest request = new BulkImportRequest(tableName);
List<RowChange> rowChanges = new ArrayList<RowChange>();
for (int i = 0; i < 5; i++) {
PrimaryKey pk = PrimaryKeyBuilder.createPrimaryKeyBuilder()
.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString("row" + i))
.build();
RowPutChange put = new RowPutChange(tableName, pk);
put.addColumn(new Column("col1", ColumnValue.fromString("v" + i)));
rowChanges.add(put);
}
request.addRowChanges(rowChanges);
BulkImportResponse response = client.bulkImport(request);
// Retrieve per-row results into succeedRows and failedRows
List<BulkImportResponse.RowResult> succeedRows = new ArrayList<BulkImportResponse.RowResult>();
List<BulkImportResponse.RowResult> failedRows = new ArrayList<BulkImportResponse.RowResult>();
response.getResult(succeedRows, failedRows);
System.out.println("All succeed: " + response.isAllSucceed());
System.out.println("Succeed: " + succeedRows.size() + ", Failed: " + failedRows.size());
Parametreler
|
Ad |
Tür |
Açıklama |
|
tableName (gerekli) |
String |
Tablo adı. |
|
rowChanges (gerekli) |
List<RowChange> |
Satır işlemlerinin listesi. Tek bir istekte aşağıdaki işlemleri karışık olarak kullanabilirsiniz:
|
Yanıt
Aktarım sonucu
BulkImportResponse nesnesi aşağıdaki işleme özel alanı içerir.
|
|
|
|
|
|
|
|
Satır sonucu
BulkImportResponse.rowResults[] dizisindeki her öğe BulkImportResponse.RowResult türündedir.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Örnekler
Tek istekte ekleme, güncelleme ve silme işlemlerini birleştirme
Ekleme, güncelleme ve silme işlemlerini birlikte göndermek için tek bir BulkImportRequest nesnesi kullanın.
String tableName = "bulk_import_demo";
BulkImportRequest request = new BulkImportRequest(tableName);
// Insert a new row
PrimaryKey pkPut = PrimaryKeyBuilder.createPrimaryKeyBuilder()
.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString("mixed_put"))
.build();
RowPutChange put = new RowPutChange(tableName, pkPut);
put.addColumn(new Column("col1", ColumnValue.fromString("put_value")));
request.addRowChange(put);
// Update an existing row (append a column)
PrimaryKey pkUpdate = PrimaryKeyBuilder.createPrimaryKeyBuilder()
.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString("row0"))
.build();
RowUpdateChange update = new RowUpdateChange(tableName, pkUpdate);
update.put(new Column("col2", ColumnValue.fromLong(100)));
request.addRowChange(update);
// Delete an existing row
PrimaryKey pkDelete = PrimaryKeyBuilder.createPrimaryKeyBuilder()
.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString("row1"))
.build();
RowDeleteChange delete = new RowDeleteChange(tableName, pkDelete);
request.addRowChange(delete);
BulkImportResponse response = client.bulkImport(request);
System.out.println("Mixed all succeed: " + response.isAllSucceed());
Başarısız satırları yeniden deneme
Başarısız satırlardan yeni bir istek oluşturmak için createRequestForRetry(failedRows) yöntemini kullanın. Yeniden deneme isteği yalnızca başarısız satırları içerdiğinden, daha önce başarılı olan satırlar tekrar uygulanmaz.
String tableName = "bulk_import_demo";
BulkImportRequest request = new BulkImportRequest(tableName);
PrimaryKey pk = PrimaryKeyBuilder.createPrimaryKeyBuilder()
.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString("good"))
.build();
RowPutChange row = new RowPutChange(tableName, pk);
row.addColumn(new Column("col1", ColumnValue.fromString("ok")));
request.addRowChange(row);
BulkImportResponse response = client.bulkImport(request);
List<BulkImportResponse.RowResult> succeedRows = new ArrayList<BulkImportResponse.RowResult>();
List<BulkImportResponse.RowResult> failedRows = new ArrayList<BulkImportResponse.RowResult>();
response.getResult(succeedRows, failedRows);
// If any rows failed, build a retry request that contains only the failed rows
if (!failedRows.isEmpty()) {
BulkImportRequest retryRequest = request.createRequestForRetry(failedRows);
BulkImportResponse retryResponse = client.bulkImport(retryRequest);
System.out.println("Retry all succeed: " + retryResponse.isAllSucceed());
}