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

将多个 csv 文件从网站带入谷歌云平台/存储的最佳方式

如何解决将多个 csv 文件从网站带入谷歌云平台/存储的最佳方式

我已经在这里呆了 2 天了,无法弄清楚这一点。这是我第一次涉足谷歌云平台的世界。我想以最简单的方式做以下两件事

在开始之前,请允许我提供一些背景信息:我想从以下位置提取数据:

NYC Taxi and Limousine Commissionhttps://www1.nyc.gov/site/tlc/about/tlc-trip-record-data.page

我有兴趣提取 2019 年以来的所有月份(12 个 csv 文件,+ 10GB)。我想将这 12 个 csv 文件带入 Google Cloud Platform 和 Google Storage,以便以后在 BigQuery/Dataprep 中进行处理。由于大小原因,无法在本地存储这些文件

第一件事 - 有没有办法使用 -wget 命令引入这些文件,但对于多个 .csv 文件?根据我的研究,-wget 更适合拉入单个 zip 文件或单个(或几个)单个文件。出租车网站上的数据没有压缩,而是以 csv 格式按月提供。

第二件事 - 如果 -wget 选项不是可扩展的选项,我创建了一个 python 文件,其中包含从我之前提到的那 12 个月(2019 年)的网站中提取/抓取数据的脚本.我使用的脚本如下:

import requests
import shutil

filenames = [ # probably Could loop through these .._YYYY-MM
    'https://s3.amazonaws.com/nyc-tlc/trip+data/yellow_tripdata_2019-01.csv','https://s3.amazonaws.com/nyc-tlc/trip+data/yellow_tripdata_2019-02.csv','https://s3.amazonaws.com/nyc-tlc/trip+data/yellow_tripdata_2019-03.csv','https://s3.amazonaws.com/nyc-tlc/trip+data/yellow_tripdata_2019-04.csv','https://s3.amazonaws.com/nyc-tlc/trip+data/yellow_tripdata_2019-05.csv','https://s3.amazonaws.com/nyc-tlc/trip+data/yellow_tripdata_2019-06.csv','https://s3.amazonaws.com/nyc-tlc/trip+data/yellow_tripdata_2019-07.csv','https://s3.amazonaws.com/nyc-tlc/trip+data/yellow_tripdata_2019-08.csv','https://s3.amazonaws.com/nyc-tlc/trip+data/yellow_tripdata_2019-09.csv','https://s3.amazonaws.com/nyc-tlc/trip+data/yellow_tripdata_2019-10.csv','https://s3.amazonaws.com/nyc-tlc/trip+data/yellow_tripdata_2019-11.csv','https://s3.amazonaws.com/nyc-tlc/trip+data/yellow_tripdata_2019-12.csv',]

for x in filenames:
    r = requests.get(x,stream = True)
    if r.status_code == 200:
        with open(x.split('_')[-1],'wb') as f:
            r.raw.decode_content = True
            shutil.copyfileobj(r.raw,f)

如何在 Google Cloud Platform 中使用此 Python 脚本将这 12 个 csv 文件“导入”到 Google Storage 中以用于 BigQuery 和 Dataprep?我尝试使用 SSH 命令行并激活 conda,但仍然无法弄清楚(即使查看了 Google Cloud Platform 用户/参考指南!)。

也许有人可以帮助我。感谢您提供任何帮助! :)

解决方法

要将这些文件一次性加载到 Cloud Storage,我建议您创建一个 Compute Engine 虚拟机,然后使用 gsutil 下载并上传。 Compute Engine 虚拟机具有高带宽连接,应该能够毫无问题地下载/上传 10GB。

  1. 创建一个 Compute Engine 虚拟机并通过 SSH 连接到其中。您也可以使用 Cloud Shell,但它会将您的存储空间限制为 5GB,因此您需要对下载/上传进行分块。
  2. 下载文件。以下是使用 curl 的示例,但您也可以使用 wget 或使用 requests 库在 Python 中执行此操作。
curl "https://s3.amazonaws.com/nyc-tlc/trip+data/yellow_tripdata_2019-[01-12].csv" -o "tripdata_2019-#1.csv"
  1. 使用 gsutil 上传
gsutil cp tripdata-2019-{01..12}.csv gs://your-bucket

另一个选项是Storage Transfer Service。我还没有亲自使用过该服务,但它似乎适合这个用例。

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