我在 Azure Blob 存储中有一堆文件,并且不断有新文件。我想知道是否有办法让我首先获取 Blob 中的所有数据并将其移至 BigQuery,然后保持脚本或某些作业运行,以便将其中的所有新数据发送到 BigQuery?
2 回答
BigQuery 支持直接从以下外部数据源查询数据:Google Cloud Bigtable、Google Cloud Storage、Google Drive。不包括 Azure Blob 存储。正如 Adam Lydick 所提到的,作为一种解决方法,您可以将数据/文件从 Azure Blob 存储复制到 Google Cloud Storage(或其他支持 BigQuery 的外部数据源)。
要将数据从 Azure Blob 存储复制到 Google Cloud Storage,您可以运行WebJobs(或Azure Functions),并且BlobTriggerred WebJob可以在创建或更新 blob 时触发函数,在 WebJob 函数中您可以访问 blob 内容并写入/上传它到谷歌云存储。
注意:我们可以安装这个库:Google.Cloud.Storage在客户端代码中进行通用操作。此博客解释了如何在 Azure Functions 中使用 Google.Cloud.Storage sdk 。
我不知道有什么开箱即用的东西(在谷歌的基础设施上)可以实现这一点。
我可能会设置一个微型虚拟机来:
- 扫描 Azure blob 存储以查找新内容。
- 将新内容复制到 GCS(或本地磁盘)。
- 定期启动 LOAD 作业以将新数据添加到 BigQuery。
如果您使用 GCS 而不是 Azure Blob 存储,则可以消除 VM,只使用一个云函数,该函数会在添加到 GCS 存储桶的新项目时触发(假设您的 Blob 采用 BigQuery 知道如何读取的形式)。我认为这是您不希望修改的现有解决方案的一部分。