微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

自动将 Google Cloud Storage 文件导入 Google Cloud MySQL 表

如何解决自动将 Google Cloud Storage 文件导入 Google Cloud MySQL 表

目前,我在 GCS 存储桶中有一个 CSV,它每天由 Google Cloud 上托管的管道更新。我已经使用这个 CSV 通过 Cloud UI 导入功能MysqL 数据库中填充了一个表,没有问题。

我想做的是每天在设定的时间运行此导入以更新表数据,因为我的管道将更新我的 CSV。我没有看到任何 UI 功能可以做到这一点,我不确定否则最好的方法是什么。我更像是一名数据分析师,而不是 SWE,所以试图破译 Cloud Run 之类的功能有点棘手......

解决方法

更新:我最终做了一些事情来解决我的问题。 TL;DR BigQuery + 事件触发函数:

  1. 我放弃了 MySQL 实例,转而使用 BigQuery 表。我考虑过使用联合表(外部数据源,对于像我这样的新手),但由于读取时间很慢并且可能需要定期浏览数据,我认为这对我来说太笨重了。

  2. 我创建了一个函数,该函数在我的 GCS 存储桶中添加或覆盖文件时触发。此函数导致 CSV 导入到我的表中,并通过一些修改允许我截断(覆盖)数据,这对我的管道设置方式很有用。感谢 guillaume blaquiere 和 Mehmet Karakose 提出这条路径,但就其本身而言,我还不够熟练,无法自己实际编写和设置该函数。

  3. 为了实现#2,我使用了来自 rickt.org 的这个非常方便的指南:https://rickt.org/2018/10/22/poc-automated-insert-of-csv-data-into-bigquery-via-gcs-bucket-python/。这提供了编写和设置函数以在 GCS 存储桶更改时触发的分步过程。

  4. 对于那些想知道我的修改的人:

    一个。我添加了一个 job_config.write_disposition 行设置为 WRITE_TRUNCATE 用于覆盖

    B.我还将 uri 值更改为仅包含我指定的一个 CSV,而不是存储桶中的所有文件。

有一个小的权限问题,以确保与该函数关联的服务帐户可以访问我的文件/存储桶,但没有什么太大的问题。测试该函数显示成功,我的 BigQuery 表按预期更新。我将在接下来的几个晚上进行监控,以确保它继续有效并编辑此回复,以防我因任何不可预见的原因而被误认为。

,

目前,GCP 为其产品 BigQuery、Cloud Spanner、DataStore 等提供默认管道。这些管道由 Dataflow 提供。 Dataflow 不支持云存储上的文本文件到云 SQL(Mysql 等)

我认为,您可以编写函数。那个功能,如果doc添加了Cloud Storage,它会读取所有的doc并将表的相关部分写入MySQL中。

您可以使用 gcloud 命令工具或 restapi(测试版)自动导入到 MySQL。 为了更好地理解read this doc.

,

如果您有 CSV,并且想要在 Datastudio 中可视化数据,我建议您使用 BigQuery。这是一个拥有大量功能的 PB 级数据仓库!!

其中之一是直接从 Cloud Storage 读取数据并查询它们的能力:Federated queries。这不是最有效的,但对您来说是最有用的。

您还可以使用 INSERT ... SELECT ... 语句读取文件并将结果存储在表中。

您终于可以在 BigQuery 中load the CSV file。也不是很难,但需要更多代码(在 Cloud Storage 中创建文件时捕获事件,然后将其加载到 BigQuery)。但是对于这样的简单代码,我相信您可以找到 Cloud Functions 和 Cloud Run 的示例。


因此,当数据在 BigQuery 中时,您可以简单地使用 SQL 查询来请求它们,就像使用 MySQL 一样。 BigQuery 是一种无服务器产品,您只需为存储的数据量(如果存储在 BigQuery 中,否则就是存储在 Cloud Storage 中的数据量)以及您处理的数据量付费。

您还有很多很棒的文章来解释如何使用 PartitioningClustering 限制 BigQuery 的成本;我也wrote an article where I talk about Quotas

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。