如何使用脚本中的凭据从 gcs 获取数据帧.csv?



我一直在尝试将 gcs 中的存储桶直接读取到 pandas 数据帧中,如下所示:

gcs_df = pandas.read_csv("gs://my_bucket/my_file.csv")

这导致:

gcsfs.utils.HttpError: Anonymous caller does not have storage.objects.get access to the Google Cloud Storage object.

由于我没有在本地机器中设置任何凭据(从我读到的内容来看(。

对于脚本的所有其他功能,我通过以下方式使用服务帐户:

sa_creds = service_account.Credentials.from_service_account_file("my_sa_key.json")

我是否可以以某种方式将此信息传递到read_csv,这样我就不必在本地计算机中使用该帐户?

有什么想法吗?

所以pandas库依赖于 gcsfs 库。因此,要执行上述操作,您所要做的就是:

import pandas
import gcsfs
fs = gcsfs.GCSFileSystem(project= <project_id>, token=<json path>)
with fs.open("gs://my_bucket/my_file.csv") as f:
gcs_df = pandas.read_csv(f)
print(gcs_df)

是指以 .json 格式保存为密钥的服务帐户凭据。基于 gcsfs 文档,它可以是字典或更多。

有点晚了,但它可能对某人仍然有用: 如果您有包含凭据的 json 文件的路径,则可以使用os.environ从代码中将其添加到环境变量中:

import os
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "my_sa_key.json"

然后,使用gcsfs的所有内容都应该找到您现在的默认凭据。我测试了它来用熊猫写一个csv,它奏效了。

最新更新