BigQuery Python:查询能走代理,下载却失败
检查 BigQuery Python 的结果下载是否独立于查询的 HTTP 路径而单独创建 Storage API 客户端。
查询可以成功完成,但在把结果下载到 pandas 时仍然失败。BigQuery Python 库可能为该下载使用一个独立的 BigQuery Storage API 客户端。
RowIterator.to_dataframe 接口记录了 create_bqstorage_client(默认值为 true)以及 bqstorage_client 参数。请把这些设置与应用中实际存在的依赖一起阅读。普通查询路径上的成功,并不能证明可选的下载传输具有相同的代理支持或配置。
| 阶段 | 需要检查什么 |
|---|---|
| 获取凭据 | 凭据的传输方式与身份端点 |
| 提交查询并轮询 | BigQuery 客户端的请求路径 |
| 通过 Storage API 下载 | Storage API 客户端及其传输方式 |
为了进行受控对比,文档中记录的 create_bqstorage_client=False 选项可避免自动创建那个额外客户端。这有助于判断是哪条路径失败。这是一种带有性能影响的传输选择,而不是代理本身已被修复的证据。
如果应用自行提供 Storage API 客户端,请有意识地配置该客户端。不要以为挂在另一个客户端上的自定义 HTTP 对象会重新配置它。
较早的示例讨论已过时的 httplib2 实现或私有构造函数钩子。请让集成方式与已安装库的版本相匹配,并在报告中保留失败阶段。DataFrame 转换错误与被拒绝的网络连接是不同的结果,即使它们发生在同一次方法调用中。