我試圖從Google BigQuery接收一些數據,並在我的eclipse控制檯中顯示結果以開始使用BigQuery和Java。基本上,我跟着谷歌提供的說明,我在這裏找到: https://cloud.google.com/bigquery/docs/reference/libraries如何使用Eclipse和Java從Google BigQuery接收數據?
所以,我的例子中的Java代碼看起來像谷歌在快速入門示例:
import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.Dataset;
import com.google.cloud.bigquery.DatasetInfo;
public class QuickstartSample {
public static void main(String... args){
// Instantiates a client
BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();
// The name for the new dataset
String datasetName = "bigquery-public-data:hacker_news.comments";
// Prepares a new dataset
Dataset dataset = null;
DatasetInfo datasetInfo = DatasetInfo.newBuilder(datasetName).build();
// Creates the dataset
dataset = bigquery.create(datasetInfo);
System.out.printf("Dataset %s created.%n", dataset.getDatasetId().getDataset());
}
}
但是當我運行此代碼我出現以下錯誤:
HTTP ERROR 500
Problem accessing /getbigquery. Reason:
Could not get the access token.
Caused by:
com.google.cloud.bigquery.BigQueryException: Could not get the access token.
at com.google.cloud.bigquery.spi.v2.HttpBigQueryRpc.translate(HttpBigQueryRpc.java:86)
at com.google.cloud.bigquery.spi.v2.HttpBigQueryRpc.create(HttpBigQueryRpc.java:141)
at com.google.cloud.bigquery.BigQueryImpl$1.call(BigQueryImpl.java:172)
at com.google.cloud.bigquery.BigQueryImpl$1.call(BigQueryImpl.java:169)
at com.google.api.gax.retrying.DirectRetryingExecutor.submit(DirectRetryingExecutor.java:94)
at com.google.cloud.RetryHelper.runWithRetries(RetryHelper.java:54)
at com.google.cloud.bigquery.BigQueryImpl.create(BigQueryImpl.java:169)
at testpackage.dto.QuickstartSample.main(QuickstartSample.java:27)
at testpackage.getbigquery.doPost(getbigquery.java:27)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
at com.google.appengine.api.socket.dev.DevSocketFilter.doFilter(DevSocketFilter.java:74)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.appengine.tools.development.ResponseRewriterFilter.doFilter(ResponseRewriterFilter.java:134)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:34)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:63)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:48)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:122)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
我試圖用默認證書進行驗證,所以我在我的谷歌SDK控制檯跑「gcloud身份驗證的應用程序默認登錄」。儘管我可以在SDK中登錄,但eclipse給了我以前顯示的錯誤。
然後我嘗試了其他一些東西,例如將我的令牌下載爲Json文件,並在我的應用程序中使用java切換到它或手動設置我的環境變量,但它不起作用。
有沒有人有想法我做錯了什麼?任何幫助表示讚賞。
一個問題可能是該項目沒有啓用BigQuery API。如果啓用,您可以嘗試的一件事是直接從代碼加載服務帳戶密鑰文件。請參閱:https://cloud.google。COM /的BigQuery /文檔/認證/服務帳戶文件 –