BigQuery Python: クエリはプロキシ経由で動くが、ダウンロードは失敗する
BigQuery Python の結果ダウンロードが、クエリの HTTP 経路とは独立に Storage API クライアントを生成するかどうかを確認します。
クエリは正常に完了しても、その結果を pandas にダウンロードする段階で失敗することがあります。BigQuery Python ライブラリは、そのダウンロードに別個の BigQuery Storage API クライアントを使う場合があります。
RowIterator.to_dataframe インターフェースは、既定で true になる create_bqstorage_client と、bqstorage_client 引数を文書化しています。これらの設定を、アプリケーションに存在する依存関係と併せて確認してください。通常のクエリ経路での成功は、任意のダウンロード経路が同じプロキシ対応や構成を持つことを証明しません。
| 段階 | 確認すべき点 |
|---|---|
| 認証情報の取得 | 認証情報の転送経路と ID エンドポイント |
| クエリの送信とポーリング | BigQuery クライアントのリクエスト経路 |
| Storage API 経由のダウンロード | Storage API クライアントとその転送経路 |
制御された比較のために、文書化された create_bqstorage_client=False オプションは、その追加クライアントの自動生成を避けます。これはどの経路が失敗するかの特定に役立ちます。性能に影響する転送方式の選択であり、プロキシ自体が修復された証拠ではありません。
アプリケーションが独自の Storage API クライアントを提供する場合は、そのクライアントを意図的に構成してください。別のクライアントに接続した独自の HTTP オブジェクトが再構成すると想定しないでください。
古い例では、廃止された httplib2 実装や非公開のコンストラクタフックが論じられています。統合はインストール済みのライブラリ世代に合わせ、失敗した段階を報告に残してください。DataFrame 変換のエラーと拒否されたネットワーク接続は、同じメソッド呼び出しで起きても異なる結果です。