我有一些由树莓pi生成的CSV文件,需要推送到bigquery表中。
目前,我们有一个使用bigquery的python脚本。LoadJobConfig用于批量上传,我手动运行它。目标是以一种简单的方式(或每15分钟(提供流式数据。
我探索了不同的解决方案:
- 使用气流运行python脚本(高复杂性和维护性(
- 数据流(我不熟悉它,但如果它能完成任务,我会使用它(
- 安排管道通过GitLab CI运行脚本(cron语法:*/15***(
您能帮助我并向我建议实时或每15分钟将CSV文件推送到bigquery表中的最佳方法吗?
好消息,您有很多选择!也许最简单的方法是自动化您当前拥有的python脚本,因为它可以满足您的需要。假设你在本地机器上手动运行它,你可以将它上传到谷歌云上的轻量级虚拟机,在虚拟机上使用CRON来自动运行它,我过去使用过这种方法,效果很好。
另一种选择是将Python代码部署到Google Cloud Function,这是一种让GCP运行代码而不必担心维护后端资源的方法。
点击此处了解有关云功能的更多信息:https://cloud.google.com/functions
第三个选项,取决于.csv文件的生成位置,也许您可以使用BigQuery Data Transfer服务来处理导入BigQuery的操作。
点击此处了解更多信息:https://cloud.google.com/bigquery/docs/dts-introduction
祝你好运!
添加到@Ben的答案中,您还可以实现Cloud Composer来编排此工作流。它建立在Apache Airflow上,您可以使用Airflow本地工具,如功能强大的Airflow web界面和命令行工具、Airflow调度器等,而无需担心您的基础设施和维护。
您可以将DAG实现为
- 将CSV从本地上传到GCS,然后
- GCS到BQ使用
GCSToBigQueryOperator
有关Cloud Composer 的更多信息