【问题标题】:What's the quickest way to upload a large CSV file (8GB) from local computer to Google Cloud Storage/BigQuery table?将大型 CSV 文件(8GB)从本地计算机上传到 Google Cloud Storage/BigQuery 表的最快方法是什么?
【发布时间】:2020-09-29 20:26:27
【问题描述】:

我在本地硬盘上有一个 8GB 大小、包含 1.04 亿行的 CSV 文件。我需要将其作为表格直接上传到 BigQuery,或者通过 Google Cloud Storage + 然后指向 BigQuery 中的链接。完成此任务的最快方法是什么?在尝试了 Web 控制台上传和 Google Cloud SDK 之后,两者都很慢(每隔几分钟以 1% 的速度移动)。

提前致谢!

【问题讨论】:

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


    【解决方案1】:

    现有的 3 个答案都是正确的,但是如果您的带宽较低,没有人会帮助您,您将受到物理限制。

    我的建议是在发送之前对您的文件进行 gzip 压缩。文本文件压缩率高(最高100倍),可以ingest gzip files directly into BigQuery without unzipped them

    【讨论】:

    • 谢谢@guillaume blaquiere。这是我目前情况下最有用的答案,因为我受到互联网带宽(以及我目前的技术知识)的限制。原来 Python Pandas(我用来生成 CSV)有一个很好的选项,可以将 CSV 文件输出为 gzip,这太棒了!
    【解决方案2】:

    您是否考虑过按照下面提供的示例使用 BigQuery 命令行工具?

    bq load --autodetect --source-format=CSV PROJECT_ID:DATASET.TABLE ./path/to/local/file/data.csv
    

    上述命令将直接将本地CSV文件data.csv的内容加载到指定的表中,并自动检测到架构。或者,可以在此处找到有关如何通过解析其他标志根据您的要求自定义加载作业的详细信息https://cloud.google.com/bigquery/docs/loading-data-local#bq

    【讨论】:

      【解决方案3】:

      我建议您看看这个article,其中有几点需要考虑。

      基本上最好的选择是使用gsutil的并行上传功能上传你的对象,在文章中你可以找到这个命令:

      gsutil -o GSUtil:parallel_composite_upload_threshold=150M cp ./localbigfile gs://your-bucket
      

      您还可以在此处找到一些改进上传的技巧,例如移动要上传的对象的块大小。

      上传后,我会通过进一步查看 this document 转到 dweling 为 Bigquery 部分提供的选项。

      【讨论】:

        【解决方案4】:

        使用 gsutil 工具将比 Web 控制台快得多,并且具有容错性(无论如何,在完成之前可能会超时)。您可以在此处 (https://cloud.google.com/storage/docs/uploading-objects#gsutil) 找到详细说明,但本质上,一旦您在计算机上安装了 gcloud 工具,您就可以运行:

        gsutil cp [OBJECT_LOCATION] gs://[DESTINATION_BUCKET_NAME]/
        

        从那里,您可以将文件上传到 BigQuery (https://cloud.google.com/bigquery/docs/loading-data-cloud-storage-csv),这一切都将在 Google 的网络上进行。

        您将面临的瓶颈是您在初始上传期间的互联网上传速度。我们过去为绕过这一点所做的就是启动一个计算框,运行生成文件的任何进程,然后将其输出到计算框上。然后,我们使用内置的 gsutil 工具将文件上传到云存储。这具有完全在 Google 网络上运行的优势,而且速度非常快。

        【讨论】:

          猜你喜欢
          • 2014-09-18
          • 2018-06-20
          • 2018-03-28
          • 2016-01-06
          • 1970-01-01
          • 2021-04-25
          • 2019-04-18
          • 2013-03-03
          • 2018-11-26
          相关资源
          最近更新 更多