【发布时间】:2020-09-29 21:29:26
【问题描述】:
问题:谁能帮我找到一个解决方案,在不使用 azure blob 存储的情况下将数据从 Azure 数据工厂摄取到雪花表。
要求:我们现在有一组存储在雪花表中的客户 ID。我们想要遍历每个客户 ID,并使用 WebAPI 从 Amazon S3 获取所有客户详细信息并将其写回雪花表。当前系统使用 Azure Databricks(PySpark) POST 客户 ID 并使用 WebAPI 从 S3 获取相关的 json 数据,解析 json 以提取我们所需的信息并将其写回雪花。但是对于一条记录,这个过程至少需要 3 秒,我们不能花那么多时间进行数据摄取,因为我们需要处理大量数据,并且长时间运行 ADB 集群成本更高。我们认为的解决方案就像不是使用 python Web API,而是使用 azure 数据工厂从 s3 存储桶中获取数据并将其摄取到雪花表中。由于数据是客户数据,由于隐私规则,我们不假设在将其写入雪花之前将其存储在 azure blob 存储中。我们是否有任何其他方法可用于直接从 s3 或通过 ADF 将其写入雪花表不使用 Blob 存储。
【问题讨论】:
-
您不需要昂贵的数据块来从雪花中读取数据并查找 Web 服务并将数据写回雪花。您可以使用几乎任何脚本语言来执行此操作。你有多少个客户ID?如果你有任何低于 1000 万的东西,你可以将它们缓存在雪花之外的某个地方,即一个本地 sql 服务器(快速)-免费,然后使用 powershell 进行迭代,调用 Web 服务(免费),获取结果并编写回到 sql server(免费),然后一旦完成所有这些,您就可以将结果批量上传到雪花(昂贵)
-
@Nick.McDermaid 非常感谢您的建议。我们正在考虑每日批量 ETL 流程,我们的每日客户数量从 10K 到 15K 不等。但是在我们将这个系统作为一个整体进行生产之前,我们可能需要加载 10 个月的历史数据。到目前为止,我们完全避免使用任何本地数据库,因为我们的系统完全基于 azure。截至目前,客户数据(只有 ID ) 在雪花表中上演。我们正在尝试从 WebAPI 优化这些 ID 的相关数据查找/提取。
-
您是否考虑过利用 Snowflake 的内部舞台?我意识到这也是 Azure Blob,但是它的安全性和加密性非常高,并且一旦 COPY INTO 成功,数据就会被刷新。
-
如果您愿意,您可以在 Azure 函数和 Azure SQL 之类的东西中构建它。事实仍然是有更便宜的平台来实现这一目标
标签: azure amazon-s3 azure-data-factory snowflake-cloud-data-platform azure-databricks