我一直试图将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 docs,它可以是字典或更多。