使用 Google Datalab,尝试从 Google Drive 导入数据
Posted
技术标签:
【中文标题】使用 Google Datalab,尝试从 Google Drive 导入数据【英文标题】:Using Google Datalab, trying to import data from Google Drive 【发布时间】:2017-09-22 18:19:36 【问题描述】:从 Google Datalab 中的 ipython notebook 访问 Google Drive 中的数据返回:
异常:accessDenied:访问被拒绝:BigQuery BigQuery:没有 OAuth 找到了具有 Google Drive 范围的令牌。
尝试在bq cmd query Google Sheet Table occur "Access Denied: BigQuery BigQuery: No OAuth token with Google Drive scope was found" Error 中运行 gcloud config 解决方案
解决方案不适用于 datalab。
我唯一能想到的另一件事是我有多个 Google ID(在此项目之外),因此无法将 OAUTH 从 Google Drive 连接到 Google Datalab。
【问题讨论】:
问题是 Datalab 使用 Compute Engine 服务帐户,该帐户没有正确的 OAuth2 范围来访问 Google Drive。问题是,我不知道是否可以将这些范围授予它。 【参考方案1】:虽然不优雅,但您始终可以创建自己的凭据并传递给 BigQuery 查询对象:
import google.datalab
import google.datalab.bigquery as bq
from google.oauth2.service_account import Credentials
scopes = (
'https://www.googleapis.com/auth/bigquery',
'https://www.googleapis.com/auth/cloud-platform',
'https://www.googleapis.com/auth/drive'
)
credentials = Credentials.from_service_account_file('service_account.json')
credentials = credentials.with_scopes(scopes)
context = google.datalab.Context("<project id>", credentials)
your_named_query.execute(context=context)
其中“your_named_query
”来自“%%bq query --name your_named_query
”单元格。您还需要确保您的服务帐户有权访问相应的 Google 文档(例如,通过与服务帐户电子邮件地址“共享”该文档)。
【讨论】:
以上是关于使用 Google Datalab,尝试从 Google Drive 导入数据的主要内容,如果未能解决你的问题,请参考以下文章
如何快速从 Google Cloud Datalab 笔记本中获取数据?
从 Google Cloud Datalab 向 BigQuery 插入数据时如何调试解析错误?
通过 Cloud Datalab 加入 Google BigQuery
Google Cloud datalab 查询 BIgQuery 表时出错