这是我的问题。我试图上传一个大的csv文件到cosmos db (~14 db),但我发现很难最大限度地提高我正在支付的吞吐量。在蔚蓝门户度量概述UI中,它说我在支付16600 RU/s时使用73 RU/s。现在,我使用pymongo的批量写入函数上传到db,但我发现任何大于5的bulk_write长度都会引发Request rate is large.异常。我做错了吗?在这种情况下,是否有更有效的方式上传数据?因特网带宽可能不是一个问题,因为我是从一个蔚蓝的vm上传到cosmos db。
我现在如何在python中上传的结构:
for row in csv.reader:
row[id_index_1] = convert_id_to_useful_id(row[id_index_1])
find_criteria = {
# find query
}
upsert_dict = {
# row data
}
operations.append(pymongo.UpdateOne(find_criteria, upsert_dict, upsert=True))
if len(operations) > 5:
results = collection.bulk_write(operations)
operations = []如有任何建议,将不胜感激。
发布于 2018-08-29 03:07:24
我提高了上传速度。我注意到每个物理分区都有一个吞吐量限制(由于某种原因,每个分区的物理分区数乘以每个分区的吞吐量仍然不是集合的总吞吐量),所以我所做的是按每个分区拆分数据,然后为每个分区键创建一个单独的上传过程。这使我的上传速度提高了(物理分区的#)倍。
发布于 2018-08-27 06:35:20
亚伦。是的,正如您在评论中所说的,Azure Cosmos DB MongoDB API支持迁移工具。您可以在官方医生中找到blow语句。
数据迁移工具目前不支持Azure Cosmos DB MongoDB API作为源或目标。如果您想在Azure Cosmos DB中迁移MongoDB API集合中的数据,请参考Azure Cosmos DB:如何迁移MongoDB API的数据以获取说明。您仍然可以使用数据迁移工具将数据从MongoDB导出到Azure Cosmos DB集合,以便与SQL一起使用。
我只是为您提供了一个解决办法,您可以使用Azure数据工厂。请参阅此文档以使cosmos db成为sink.And引用此文档将Azure Blob存储中的csv文件作为source.In管道,您可以配置批处理大小。

当然,您可以通过编程来完成这一任务。您没有遗漏一些东西,错误Request rate is large只是意味着您已经超过了提供的RUs配额。您可以提高RUs设置的值。请参阅此文档。
如有任何问题,请随时通知我。
发布于 2018-08-25 13:54:32
我想看看Cosmos DB:数据迁移工具。我还没有在MongoDB API中使用它,但它是受支持的。我用它将大量的文档从我的本地机器转移到Azure,并取得了很大的成功,并且它将利用现有的RU/s。
如果您需要以编程的方式这样做,我建议查看DB迁移工具的底层源代码。这是开源的。您可以找到代码这里。
https://stackoverflow.com/questions/52016070
复制相似问题