使用 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 表时出错

如何在 Google Cloud Datalab 中使用 Bigquery JSON 函数

无法在 google datalab 中安装 opencv 或导入 cv2