【问题标题】:Write Cron Job in Java on GAE to Run BigQuery在 GAE 上用 Java 编写 Cron 作业以运行 BigQuery
【发布时间】:2014-04-06 14:04:34
【问题描述】:

我想在 GAE 上运行一个内部调用 BigQuery 的 cron 作业。

我目前能够运行 BigQuery,但我需要使用我的凭据登录。但我想在没有任何登录的情况下运行 BigQuery 的 cron 作业。

任何帮助将不胜感激。

【问题讨论】:

  • 您需要使用 oauth2.0 令牌。
  • 我如何使用 oauth2.0。因为 cron 作业由 GAE 运行,而不是由任何用户运行。请在 java 中提供一些代码。

标签: google-app-engine google-bigquery


【解决方案1】:

我知道这不是您所期望的 java。秘诀是使用 AppAssertionCredentials。 这是python示例:

from apiclient.discovery import build
from oauth2client.appengine import AppAssertionCredentials
import httplib2
from google.appengine.api import memcache

scope = 'https://www.googleapis.com/auth/bigquery'

credentials = AppAssertionCredentials(scope=scope)

http = credentials.authorize(httplib2.Http(memcache))

return build("bigquery", "v2", http=http)

【讨论】:

【解决方案2】:

我已经成功地在 java 中实现了它。在执行它之前,我们需要为服务帐户生成客户端 ID。

private static final HttpTransport TRANSPORT = new NetHttpTransport();
private static final JsonFactory JSON_FACTORY = new JacksonFactory();
private static Bigquery bigquery;




AppIdentityCredential credential = new AppIdentityCredential(Collections.singleton(BigqueryScopes.BIGQUERY));
bigquery = new Bigquery.Builder(TRANSPORT, JSON_FACTORY, credential)
            .setApplicationName("BigQuery-Service-Accounts/0.1")
            .setHttpRequestInitializer(credential).build();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-03
    • 2013-01-30
    • 2015-01-03
    • 2018-03-14
    • 1970-01-01
    • 2017-10-22
    • 2014-04-20
    • 1970-01-01
    相关资源
    最近更新 更多