如何使用Google Kubernetes Engine并行下载,转换和上传多个文件?

时间:2019-06-13 14:40:25

标签: python kubernetes google-cloud-platform google-bigquery google-cloud-storage

我在Google存储桶中存储了大量数据,其结构如下: New-SmbShare : A positional parameter cannot be found that accepts argument 'share bsharetestingpermissions2'. 。我想要做的是创建一个Kubernetes作业,将其下载,解析并并行将解析的文件上传到BigQuery。到目前为止,我已经成功编写了一个Python代码,该代码以日期间隔作为输入并遍历执行gs://project_garden/plant_logs/2019/01/01/humidity/plant001/hour.gz进行下载,gsutil -m cp -r进行提取和熊猫操作的每个植物,从而在本地实现了无并行操作进行转换。我想用Kubernetes对每个工厂并行执行相同的操作。是否可以通过定义一个任务来并行化该过程,该任务传递每个吊舱的不同工厂ID并下载每个吊舱的文件?

1 个答案:

答案 0 :(得分:0)

无法从Kubernetes直接上传到BigQuery,只能使用以下方法将数据上传到BigQuery [1]:

  • 来自云存储
  • 通过其他Google服务(例如Google广告管理器和Google Ads)
  • 来自可读数据源(例如本地计算机)
  • 通过使用流插入插入单个记录
  • 使用DML语句执行批量插入
  • 在Cloud Dataflow管道中使用BigQuery I / O转换将数据写入BigQuery

如前一条评论中所述,最简单的解决方案是使用DataFlow上传数据,您可以在链接[2]中找到一个模板以将文本从Google Cloud Storage(GCS)上传到BigQuery

如果必须使用Google Cloud Engine(GKE),则需要执行以下步骤:

  1. 使用GKE从GCS读取数据。您可以在下一个链接[3]中找到有关如何在您的容器中安装桶的示例。
  2. 按照问题中提到的代码解析数据
  3. 将数据从GCS上载到BigQuery,更多信息请参见链接[4]

[1] https://cloud.google.com/bigquery/docs/loading-data

[2] https://cloud.google.com/dataflow/docs/guides/templates/provided-streaming#gcstexttobigquerystream

[3] https://github.com/maciekrb/gcs-fuse-sample

[4] https://cloud.google.com/bigquery/docs/loading-data-cloud-storage