如何解决如何安排将数据文件从位于计算引擎实例上的 SFTP 服务器导入 BigQuery?
我想要达到的目标:
将每小时即将到来的数据文件从多个不同的提要传输到位于计算引擎 VM 上的 SFTP 文件服务器上,并有效且经济高效地进行实时更新。
上下文:
-
我尝试从中导入数据的软件是旧版软件,不支持直接导出到云。因此,从软件到云的直接连接不是一种选择。
-
不过,它确实支持将数据导出到 SFTP 服务器。不能直接通过任何 GCP 工具使用。
-
因此,我在具有可扩展存储的计算引擎 VM 实例上使用
vsftpd
设置了手动 SFTP 服务器,然后为其提供静态 IP 并将该 IP 硬连线到我的软件中。数据现在每隔一小时无缝地进入计算引擎实例。 -
文件每小时生成一次。因此,每小时都有一个不同的文件。但是它们可能包含一些重复。即前一小时文件的部分结束记录可能与当前小时文件的开头部分重叠。
-
文件来自不同的源提要,而且我在文件名中有提要名称,因此我的计算引擎 VM 实例上不断增长的数据如下所示:
feed1_210301_0500.csv feed2_210301_0500.csv feed3_210301_0500.csv feed1_210301_0600.csv feed2_210301_0600.csv feed3_210301_0600.csv feed1_210301_0700.csv feed2_210301_0700.csv feed3_210301_0700.csv ...
我尝试过的:
- 我在 VM 实例中设置了 Bigquery 访问权限和云存储权限,以便将数据从 VM 实例访问到 BigQuery:
-
我曾尝试将数据直接导入 BigQuery 以及在谷歌云存储中从那里导入数据,但没有将数据从 VM 实例直接导入到 BigQuery 的选项,也无法以某种方式将数据从 VM 导入到然后 GCS 加载到 BigQuery 中,但没有选择,文档也没有提及预定传输的问题。
-
有一些外部数据传输服务,如 Fivetran 和 HevoData,但它们相对昂贵,而且似乎有点矫枉过正,因为我的源或目的地都在 GCP 上,而且不会与拥有第三个 VM 并为导入安排一些脚本大不相同。 (顺便说一句,这是我目前的解决方法:D,即使用 python 脚本将数据流式传输到 BigQuery,如here 所述)
-
目前我正在探索 DataFusion,它每月只有 120 小时免费,基础 Dataprep 管道有额外费用,但不确定它是否是正确的方法。此外,我目前正在探索诸如 Cloud Scheduler 和 Cloud Composer 之类的工具,看看是否有任何适合我的数据需求,但截至目前找不到可行的解决方案。
我很高兴学习任何新的工具和技术,也感谢任何改善情况的建议。
解决方法
我只是尝试直接从 GCE 虚拟机上传,它完美无缺。我在 Cloud API 访问范围中启用了 BigQuery,使用一些随机数据创建了文件 (test_data.csv),它满足我在 BigQuery 表数据集 (test_dataset) 中拥有的表 (test_table) 的架构并运行:
bq load test_dataset.test_table test_data.csv
,
您可以使用 GCS on-premise transfer(您可以安排它)=> 然后安排一个 GCS transfer to BigQuery。
如果这和外部数据传输服务都不适合您,那么我相信您最好的办法是创建一个脚本来安排 batch load of the data from your VM to BigQuery。
也许另一个 answer 也能帮到你。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。