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

2024-06-28 11:09:22 发布

您现在位置:Python中文网/ 问答频道 /正文

这件事我已经做了两天了,还没弄明白。这是我第一次涉足谷歌云平台。我想以最简单的方式做以下两件事:

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

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

我感兴趣的是从2019年开始的所有月份(12个csv文件,+10GB)。我想把这12个csv文件放到谷歌云平台和谷歌存储中,以便以后在BigQuery/Dataprep中处理。由于文件大小的原因,不能在本地存储这些文件

第一件事-除了多个.csv文件外,是否有方法使用-wget命令导入这些文件?根据我的研究,-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云平台中使用这个Python脚本将这12个csv文件“导入”到Google存储中,以便在BigQuery和Dataprep中使用?我尝试使用SSH命令行并激活了conda,但仍然无法解决这个问题(即使在查看了googlecloud平台用户/参考指南之后)

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


Tags: 文件csv数据httpscomdatas3平台
1条回答
网友
1楼 · 发布于 2024-06-28 11:09:22

对于一次性将这些文件加载到云存储中,我建议创建一个计算引擎VM,然后下载,然后使用gsutil上传。计算引擎虚拟机具有高带宽连接,应该能够顺利下载/上传10GB

  1. 创建一个计算引擎VM,并在其中使用SSH。您也可以使用Cloud Shell,但它将您的存储空间限制为5GB,因此您需要将下载/上传分块
  2. 下载文件。下面是一个使用curl的示例,但是您也可以使用wget或在Python中使用requests库来实现
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。我还没有亲自使用过该服务,但它似乎适合这个用例

相关问题 更多 >