通过云函数从云存储中读取数据
Posted
技术标签:
【中文标题】通过云函数从云存储中读取数据【英文标题】:Reading Data From Cloud Storage Via Cloud Functions 【发布时间】:2019-04-20 04:22:18 【问题描述】:我正在尝试快速验证在 Python 中构建数据处理管道的概念。为此,我想构建一个 Google 函数,当某些 .csv 文件被放入 Cloud Storage 时会触发该函数。
我跟着this Google Functions Python tutorial 进行操作,虽然示例代码确实会在删除文件时触发函数来创建一些简单的日志,但我真的被困在我必须进行什么调用才能实际读取数据的内容上。我尝试搜索 SDK/API 指导文档,但找不到。
如果这是相关的,一旦我处理了 .csv,我希望能够将我从中提取的一些数据添加到 GCP 的 Pub/Sub 中。
【问题讨论】:
你最终是否设法让它工作,我遇到了一些类似的问题,并不断遇到建议最好让云功能直接将数据发送到大查询,并且然后从那里拿走...谢谢 是的,我确实设法让它工作。我能够使用顶部评论读取数据的内容,然后使用 SDK 将数据放入 Pub/Sub。如果你能告诉我你的具体问题,我很乐意提供帮助:) 【参考方案1】:这是使用pandas
的替代解决方案:
云功能码:
import pandas as pd
def GCSDataRead(event, context):
bucketName = event['bucket']
blobName = event['name']
fileName = "gs://" + bucketName + "/" + blobName
dataFrame = pd.read_csv(fileName, sep=",")
print(dataFrame)
【讨论】:
【参考方案2】:该函数实际上并不接收文件的内容,只是一些关于它的元数据。
您需要使用google-cloud-storage
客户端。有关详细信息,请参阅"Downloading Objects" 指南。
将它与您正在使用的教程放在一起,您将获得如下功能:
from google.cloud import storage
storage_client = storage.Client()
def hello_gcs_generic(data, context):
bucket = storage_client.get_bucket(data['bucket'])
blob = bucket.blob(data['name'])
contents = blob.download_as_string()
# Process the file contents, etc...
【讨论】:
以上是关于通过云函数从云存储中读取数据的主要内容,如果未能解决你的问题,请参考以下文章