看起来不可能在Azure Cosmos DB中重命名容器。应该通过批量操作将其复制到新容器中。我如何用Java SDK做到这一点?有样品吗?
是的,你是对的。当前无法更改容器名称。按照我理解,您希望丢弃旧容器(正如您最初希望重命名的那样),并将数据迁移到新容器。
数据迁移工具是一个很好的工具:教程:使用数据迁移工具将数据迁移到Azure Cosmos DB
此外,请查看Java的大容量执行器库、API文档和示例。
您可以在BulkExecutor类中使用ImportAll
:
ConnectionPolicy connectionPolicy = new ConnectionPolicy();
RetryOptions retryOptions = new RetryOptions();
// Set client's retry options high for initialization
retryOptions.setMaxRetryWaitTimeInSeconds(120);
retryOptions.setMaxRetryAttemptsOnThrottledRequests(100);
connectionPolicy.setRetryOptions(retryOptions);
connectionPolicy.setMaxPoolSize(1000);
DocumentClient client = new DocumentClient(HOST, MASTER_KEY, connectionPolicy, null);
String collectionLink = String.format("/dbs/%s/colls/%s", "mydb", "mycol");
DocumentCollection collection = client.readCollection(collectionLink, null).getResource();
DocumentBulkExecutor executor = DocumentBulkExecutor.builder().from(client, collection,
collection.getPartitionKey(), collectionOfferThroughput).build();
// Set retries to 0 to pass control to bulk executor
client.getConnectionPolicy().getRetryOptions().setMaxRetryWaitTimeInSeconds(0);
client.getConnectionPolicy().getRetryOptions().setMaxRetryAttemptsOnThrottledRequests(0);
for(int i = 0; i < 10; i++) {
List documents = documentSource.getMoreDocuments();
BulkImportResponse bulkImportResponse = executor.importAll(documents, false, true, 40);
// Validate that all documents inserted to ensure no failure.
if (bulkImportResponse.getNumberOfDocumentsImported() < documents.size()) {
for(Exception e: bulkImportResponse.getErrors()) {
// Validate why there were some failures.
e.printStackTrace();
}
break;
}
}
executor.close();
client.close();
如果有帮助就告诉我。
我通过链接而不是复制所有的数据来解决问题。这将模拟容器的重命名。而不是一个容器,我现在使用两个容器。第一个容器只包含第二个容器的名称。
现在我可以构建新版本的容器了。如果我完成了,我会更改保存的容器名称。然后我扔下旧容器。
棘手的是通知应用程序的所有节点使用新的容器名称。
问题内容: 在使用以下代码初始化时,我拼错了名称: 我实际上打算用名称创建环境。尝试将文件夹重命名为时,我发现这没有太大帮助。激活环境的名称仍重命名旧的。 我想知道如何重命名环境? 问题答案: 默认情况下,virtualenv不支持环境重命名。仅删除virtualenv目录并使用正确的名称创建一个新目录是更安全的。您可以通过以下方式做到这一点: 激活您的virtualenv: 创建当前安装的软件包
我想知道如何更改包名称我的项目没有任何错误。我试了很多次,但最后却有很多错误。例如导入语句中的错误,R类错误...等等,请帮助我解决这个问题。谢谢
问题内容: 我需要重命名集群中的几个索引(它们的名称必须更改,我不能使用alias)。 我看到没有支持的方法来执行此操作,我发现最接近的方法是重命名索引的目录,我在集群中尝试了此方法。 该集群有3台计算机,并且分片在每台计算机上复制。我关闭了上elasticsearch ,改名到并重新启动。 群集的状态为黄色,elasticsearch正在做一些魔术来恢复正确的状态。过了一段时间我最终 正在使用和
我需要重命名集群中的多个索引(必须更改它们的名称,我不能使用别名)。 我看到没有支持的方法可以做到这一点,我找到的最接近的方法是重命名索引的目录,我在集群中尝试了这个方法。 集群有 3 台机器 、 和 ,每个机器上都复制了分片。我关闭了上的弹性搜索,将重命名为,然后重新启动。 集群的状态是黄色的,弹性搜索正在使用一些魔法来恢复正确的状态。过了一段时间,我最终得到了 可用且完全复制(我猜是从和恢复的
我试图将我的应用程序上传到Play Store,但谷歌不允许应用程序包含名称为“example.xxxxx”的软件包。我的问题是,我的包叫做“com.example.mainActivity”,我已经尝试重命名它了,但我对IntelliJ所能做的就是将部件重命名为“mainActivity”。“榜样”依旧。在尝试通过进入清单并用不同的名称重构它来更改示例之后,IntelliJ刚刚用新名称创建了一个
我有DynamoDB表,我想重命名它。似乎没有任何重命名表的命令或选项。以前有人给桌子重新命名过吗?