在 GAE 上用 Java 编写 Cron 作业以运行 BigQuery
Posted
技术标签:
【中文标题】在 GAE 上用 Java 编写 Cron 作业以运行 BigQuery【英文标题】:Write Cron Job in Java on GAE to Run BigQuery 【发布时间】:2014-04-06 14:04:34 【问题描述】:我想在 GAE 上运行一个内部调用 BigQuery 的 cron 作业。
我目前能够运行 BigQuery,但我需要使用我的凭据登录。但我想在没有任何登录的情况下运行 BigQuery 的 cron 作业。
任何帮助将不胜感激。
【问题讨论】:
您需要使用 oauth2.0 令牌。 我如何使用 oauth2.0。因为 cron 作业由 GAE 运行,而不是由任何用户运行。请在 java 中提供一些代码。 【参考方案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)
【讨论】:
能不能给个java代码呢。大部分都试过了还是不行。 这里是相关任务的 java 文档:javadoc.google-oauth-java-client.googlecode.com/hg/1.6.0-beta/…【参考方案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();
【讨论】:
以上是关于在 GAE 上用 Java 编写 Cron 作业以运行 BigQuery的主要内容,如果未能解决你的问题,请参考以下文章
没有在Google App Engine中安排的Cron作业
如何取消或停止Google App Engine Cron作业
在 CPanel 上设置 Cron 作业以执行 PHP 脚本