无法从 DataLab 连接到 Bigquery API

Posted

技术标签:

【中文标题】无法从 DataLab 连接到 Bigquery API【英文标题】:Unable to Connect to Bigquery API from DataLab 【发布时间】:2016-04-14 17:19:50 【问题描述】:

我在 Python 中运行以下代码以从数据实验室笔记本连接到大查询 api:

!pip install google-api-python-client==1.4.2 httplib2==0.9.2 oauth2client==1.5.2 pyasn1==0.1.9 pyasn1-modules==0.0.8 rsa==3.2.3 simplejson==3.8.1 six==1.10.0 uritemplate==0.6 wheel==0.24.0

import httplib2
import time
import datetime as dt
import sys
import subprocess
from googleapiclient import errors
from googleapiclient.discovery import build
from oauth2client.file import Storage
from oauth2client.client import GoogleCredentials
from googleapiclient.http import MediaFileUpload
import gcp.bigquery as bq
import pandas as pd

credentials = GoogleCredentials.get_application_default()

bigquery_service = build('bigquery', 'v2', credentials=credentials)

我收到以下错误:

ImportError Traceback(最近一次调用最后一次) 在 ()

----> 5 个凭据 = GoogleCredentials.get_application_default() 6 7 bigquery_service = build('bigquery', 'v2', credentials=credentials)

/usr/local/lib/python2.7/dist-packages/oauth2client/client.pyc in >get_application_default() 第1202章 1203 回归自我 -> 1204 第1205章 1206 def 序列化数据(自我):

/usr/local/lib/python2.7/dist-packages/oauth2client/client.pyc in _get_implicit_credentials(cls) 第1187章 第1188章 -> 1189 第1190章 1191 """这个Credentials对象是否是无范围的。

/usr/local/lib/python2.7/dist-packages/oauth2client/client.pyc in _implicit_credentials_from_gce() 第1123章 1124 """检测代码是否在计算引擎环境中运行。 -> 1125 1126 返回: 1127 运行在GCE环境下为真,否则为假。

/usr/local/lib/python2.7/dist-packages/oauth2client/client.pyc 在 _get_application_default_credential_GCE() 1378凭据:要保存到知名文件的凭据; 1379 它应该是 GoogleCredentials 的一个实例 -> 1380 well_known_file:凭证所在文件的名称 1381人获救;该参数应该用于 仅 1382 测试

/usr/local/lib/python2.7/dist-packages/oauth2client/gce.py in () 24 来自 oauth2client._helpers 导入 _from_bytes 25 从 oauth2client 导入实用程序 ---> 26 从 oauth2client.client 导入 HttpAccessTokenRefreshError 27 从 oauth2client.client 导入 AssertionCredentials 28

ImportError: 无法导入名称 HttpAccessTokenRefreshError

我错过了什么?为什么这个谷歌提供的例子不能在数据实验室工作?

【问题讨论】:

为什么不只使用 Datalab 内置的 BigQuery 支持(在 gcp.bigquery 和支持的 %bigquery 魔术中)? 【参考方案1】:

做了一些谷歌搜索后,我在这里找到了答案:authentication error in Cloud Datalab: "ImportError: No module named gce”

这个解决方案解决了我的问题。

【讨论】:

其他问题可能会解决您的问题,但您不应该只为 BigQuery 跳过这些障碍(我在该问题中所做的事情是必要的,因为我正在尝试构建/使用基因组学服务)。你可以在 github 上找到很多 datalab / bigquery 示例,例如:github.com/GoogleCloudPlatform/datalab/tree/master/content/…

以上是关于无法从 DataLab 连接到 Bigquery API的主要内容,如果未能解决你的问题,请参考以下文章

我无法在 datalab 中查阅 bigquery 表?

无法将 Google Ads 连接到 BigQuery

无法使用 Python 连接到 BigQuery - ServiceUnavailable

无法从datalab查询表

Google Cloud datalab 查询 BIgQuery 表时出错

将 Numpy 矩阵从 DataLab 上传到 BigQuery