【发布时间】:2020-12-25 19:29:23
【问题描述】:
我想创建一个云函数(应在每天 01:00 执行)。 函数应该
- 生成数据框
- [导出为 dataframe.csv]
- 将数据帧(或 .csv)推送到存储桶
.....
- 问题1:是否可以将数据帧推送到存储桶?
- 问题 2:如何在 CloudFunction(CF) 中创建一个 .csv 文件,以便将其推送到存储桶中?
现在更新代码:(仍然报错)
def push_cars( data ): ## <<----- not sure how many paramter &why??
import requests
import pandas as pd
import os
from datetime import datetime
from google.cloud.storage.blob import Blob
from google.cloud import storage
#import csv # <<--- not sure if required???
cars_dict = {'Brand': ['Honda Civic','Toyota Corolla','Ford Focus','Audi A4'],
'Price': [22000,25000,27000,35000]
}
cars = pd.DataFrame(cars_dict, columns = ['Brand', 'Price'])
timestamp = datetime.now().strftime("%Y_%m_%d-%H_%M_%S")
name = "cars_" + timestamp + ".csv"
cars.to_csv( "/tmp/test.csv" ,index=False)
with open('/tmp/test.csv', "w") as csv:
csv.write(name)
os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = "My-project.json"
target_bucket = 'cars:python_gogo'
storage_client = storage.Client()
bucket = storage_client.get_bucket( target_bucket )
data = bucket .blob( name_output )
对于云上的复制,您需要创建一个包含以下内容的 requirements.txt:
requests
pandas
google-cloud-storage
datetime
在云外壳中,我使用以下方法部署此 CF: gcloud 函数部署 push_cars--entry-point=push_cars--runtime=python37 --memory=1024MB --region=us-east1 --allow-unauthenticated --trigger-http
【问题讨论】:
-
你不能只推送一个数据框。得先序列化。
-
有解决办法吗?我可以将数据框导出为 .csv。并将这个 .csv 推送到存储桶中?
标签: python google-cloud-functions google-cloud-storage