gpt4 book ai didi

Azure 批量插入 : Bad Request Error

转载 作者:行者123 更新时间:2023-12-02 23:32:44 27 4
gpt4 key购买 nike

尝试在 Azure 表存储中插入多个实体时遇到以下错误:

com.microsoft.azure.storage.table.TableServiceException: Bad Request
at com.microsoft.azure.storage.table.TableBatchOperation$1.postProcessResponse(TableBatchOperation.java:525)
at com.microsoft.azure.storage.table.TableBatchOperation$1.postProcessResponse(TableBatchOperation.java:433)
at com.microsoft.azure.storage.core.ExecutionEngine.executeWithRetry(ExecutionEngine.java:146)

下面是批量插入的Java代码:

public BatchInsertResponse batchInsert(BatchInsertRequest request){
BatchInsertResponse response = new BatchInsertResponse();

String erpName = request.getErpName();
HashMap<String,List<TableEntity>> tableNameToEntityMap = request.getTableNameToEntityMap();

HashMap<String,List<TableEntity>> errorMap = new HashMap<String,List<TableEntity>>();
HashMap<String,List<TableEntity>> successMap = new HashMap<String,List<TableEntity>>();;

CloudTable cloudTable=null;

for (Map.Entry<String, List<TableEntity>> entry : tableNameToEntityMap.entrySet()){
try {
cloudTable = azureStorage.getTable(entry.getKey());
} catch (Exception e) {
e.printStackTrace();
}

// Define a batch operation.
TableBatchOperation batchOperation = new TableBatchOperation();
List<TableEntity> value = entry.getValue();

for (int i = 0; i < value.size(); i++) {
TableEntity entity = value.get(i) ;
batchOperation.insertOrReplace(entity);
if (i!=0 && i % batchSize == 0) {
try {
cloudTable.execute(batchOperation);
batchOperation.clear();
} catch (Exception e) {
e.printStackTrace();
}
}
}


try {
cloudTable.execute(batchOperation);
} catch (Exception e) {
e.printStackTrace();
}
}

}

如果我将batchSize值分配给10,上面的代码工作正常,但如果我将分配给1000或100,它将抛出错误请求错误。

请帮我解决这个错误。我正在使用 Spring boot 和 Azure 存储 Java SDK 版本 4.3.0。

最佳答案

正如 Aravind 提到的,400 错误通常意味着您的数据有问题。来自 this链接,如果不满足以下一个或多个条件,实体批量交易将会失败:

  • 作为事务一部分进行操作的所有实体必须具有相同的 PartitionKey 值
  • 一个实体在事务中只能出现一次,并且只能对其执行一项操作。
  • 交易可以包含最多 100 个实体,并且其总负载大小不得超过 4 MB
  • 所有实体均受 Understanding the Table Service Data Model 中所述的限制的约束.

请根据这四项规则检查您的实体,并确保您没有违反其中任何一项规则。

关于Azure 批量插入 : Bad Request Error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38681964/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com