从 Azure Block 到 CosmosDB 的 Azure 数据工厂复制速度很慢

Posted

技术标签:

【中文标题】从 Azure Block 到 CosmosDB 的 Azure 数据工厂复制速度很慢【英文标题】:Azure Data Factory copy from Azure Block to CosmosDB is slow 【发布时间】:2019-06-20 18:53:18 【问题描述】:

我在高级 Azure 存储中有一个 BlockBlob。 这是一个 500mb 的 zip 文件,包含大约 2.8 亿个 CSV 格式的电话号码。

我在 ADF 中创建了一个管道来解压缩并将条目复制到 Cosmos DB SQL API,但它需要 40 小时才能完成。目标是每晚使用信息中的差异更新数据库。

我的存储帐户和 Cosmos DB 位于同一区域。 Cosmos DB 分区键是区号,似乎分布良好。

目前,在 20,000 RU 时,我已经扩展了几次,但门户网站一直告诉我要扩展更多。他们建议使用 106,000 RU,即每月 6000 美元。 关于加快速度的实用方法有什么想法吗?

-- 更新。

我尝试过导入解压后的文件,但速度并没有提高。事实上更慢,尽管报告了更多的高峰连接。

我现在正尝试在开始传输时将 RU 动态放大/缩小到一个非常高的数字。还在玩数字。不确定确定我需要在 X 分钟内传输这 10.5GB 的 RU 数量的公式。

【问题讨论】:

谢谢格雷格。今晚将开始。 对 RU 的建议基于您的摄取率(以及正在发生的相关限制)。这只是一个建议,不是必需的。但是如果你超过了分配的 RU,那么你就会被限制;除了确保您的内容适合多个物理分区之外,没有其他方法可以提高性能,以允许并行写入(RU 在您的物理分区中划分)。如果您只是在短时间内运行这样的工作,您可以扩大规模,进行导入,然后再次缩小规模。您无需保持 RU 率不变。 谢谢大卫。这是我学到的。我正在努力寻找我需要扩展的上限。但是,我试图弄清楚这些规模请求需要多长时间才能处理。我还了解到,写入比读取要昂贵得多,所以我希望一旦加载数据库,我就可以在后续运行中执行读取,以维护增量,而不是总是写出整个数据库。 【参考方案1】:

我最终使用 Azure Functions 动态扩展了吞吐量。是的,如果我将 RU 留得很高,Cosmos 的价格会非常昂贵。但是,当我进行数据摄取然后缩减规模时,我只需要这么高。我使用逻辑应用程序调用 Azure 函数来“扩展 RU”,然后启动我的 Azure 数据工厂管道。当它关闭时,它会调用 Azure 函数进行缩减。

【讨论】:

你使用哪个 cosmos DB 库?

以上是关于从 Azure Block 到 CosmosDB 的 Azure 数据工厂复制速度很慢的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 azure JavaScript 函数和 Key Vault 机密检索 cosmosDB 数据

将Cosmos DB模拟器(MongoDB API)迁移到Azure时发生致命错误

Azure 数据工厂和 Cosmos DB

将 CosmosDB const 连接字符串注入 Azure Function V4 CosmosDB 输入/输出绑定?

Azure Cosmos DB:将集合克隆到另一个数据库

数据从SQL Server迁移到Azure Cosmos数据库后无法查看数据