使用Ibis加载私有GCS桶换行分隔JSON文件报错求助
解决方案:Ibis加载私有GCS桶JSON文件报错问题
问题根源
你遇到的错误不是GCS对私有文件做了压缩或加密,而是私有文件使用的https://storage.cloud.google.com开头的URL返回的是GCS控制台网页内容(HTML),而非原始JSON文件。Ibis尝试解析HTML时自然会报JSON格式错误;而公开文件用https://storage.googleapis.com开头的URL会直接返回原始文件内容,所以能正常加载。
具体解决步骤
改用正确的GCS对象存储URL:私有文件统一使用
https://storage.googleapis.com/<bucket-name>/<file-path>或者gs://<bucket-name>/<file-path>格式,不要用storage.cloud.google.com的网页URL。配置GCS身份认证:
- 确保你拥有带
storage.objects.get权限的服务账号密钥文件(JSON格式)。 - 方法一:通过环境变量配置认证
之后直接用Ibis读取:export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/service-account-key.json"import ibis table = ibis.read_json("gs://<bucket-name>/<file-path>") - 方法二:代码中直接传入凭证
import ibis from google.oauth2 import service_account creds = service_account.Credentials.from_service_account_file("/path/to/key.json") table = ibis.read_json("gs://<bucket-name>/<file-path>", credentials=creds)
- 确保你拥有带
验证权限配置:确认服务账号已被赋予
Storage Object Viewer(roles/storage.objectViewer)IAM角色,确保能读取目标桶内的文件。
内容的提问来源于stack exchange,提问作者Pieter Wijkstra
相关产品推荐
相关产品推荐

