连接Google BigQuery时无法定位私钥文件的问题求助
解决BigQuery本地私钥文件找不到及权限疑问
一、FileNotFoundError 排查与解决
这个错误直接指向私钥文件路径问题,按以下步骤逐一验证:
确认路径拼写绝对正确
Mac/Linux系统路径区分大小写,手动从文件管理器复制该JSON文件的绝对路径(右键文件→复制路径),替换代码中的路径,避免手动输入的拼写错误。验证文件是否真实存在
打开Downloads文件夹,确认transcript_test.json文件确实存在,没有被误删、移动到其他目录,或是下载时中断导致文件缺失。检查文件读取权限
打开终端执行以下命令,查看当前用户对该文件的读取权限:ls -l /Users/alh/Downloads/transcript_test.json如果输出中当前用户没有读权限(比如权限列是
-rw-------且不是当前用户),执行以下命令赋予读权限:chmod 644 /Users/alh/Downloads/transcript_test.json代码中先做路径校验
可以在加载凭证前加入路径检查,提前定位问题:import os key_path = '/Users/alh/Downloads/transcript_test.json' if not os.path.exists(key_path): raise FileNotFoundError(f"私钥文件不存在:{key_path}")
二、权限疑问解答
BQ Owner权限完全足够,不需要Admin权限。
Owner角色已经包含了BigQuery资源的所有操作权限(包括读取表数据、创建/修改表、管理数据集等),Admin是项目级的超级权限,对于连接并读取BigQuery表的需求来说过度且不必要。
优化后的完整示例代码
import sys import os from google.oauth2 import service_account from google.cloud import bigquery from google.cloud import language import pandas_gbq as pd # 路径校验 key_path = '/Users/alh/Downloads/transcript_test.json' if not os.path.exists(key_path): raise FileNotFoundError(f"私钥文件不存在,请检查路径:{key_path}") # 加载凭证并建立连接 credentials = service_account.Credentials.from_service_account_file(key_path) project_id = 'dgi-prd' client = bigquery.Client(credentials=credentials, project=project_id) # 测试读取数据(替换成你的数据集和表名) test_query = "SELECT * FROM `dgi-prd.your_dataset.your_table` LIMIT 5" result_df = client.query(test_query).to_dataframe() print(result_df)
内容的提问来源于stack exchange,提问作者Wesson
相关产品推荐
相关产品推荐

