如何使用Eclipse和Java从Google BigQuery接收数据?

如何使用Eclipse和Java从Google BigQuery接收数据?,java,eclipse,google-app-engine,google-bigquery,Java,Eclipse,Google App Engine,Google Bigquery,我试图从GoogleBigQuery接收一些数据,并在eclipse控制台中显示结果,以开始使用BigQuery和Java。基本上,我遵循了谷歌提供的说明,我在这里找到了: 因此,我的示例Java代码类似于google的快速入门示例: import com.google.cloud.bigquery.BigQuery; import com.google.cloud.bigquery.BigQueryOptions; import com.google.cloud.bigquery.Datas

我试图从GoogleBigQuery接收一些数据,并在eclipse控制台中显示结果,以开始使用BigQuery和Java。基本上,我遵循了谷歌提供的说明,我在这里找到了:

因此,我的示例Java代码类似于google的快速入门示例:

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)
我尝试使用默认凭据进行身份验证,因此在我的google SDK控制台中运行了“gcloud auth application Default login”

然后我尝试了一些其他的事情,比如将我的令牌下载为Json文件,并在我的应用程序中使用java来实现它,或者手动设置我的环境变量,但效果并不理想


有人知道我做错了什么吗?非常感谢您的帮助。

听起来您好像在点击阻止服务使用
gcloud
应用程序默认凭据的按钮。有:重命名(或删除)
googlecloudsdk/platform/google\u appengine/google/appengine/tools/java/lib/shared/appengine remote api.jar

您还需要配置用于存储和访问BigQuery数据集的GCP项目。可以通过在启动配置的参数选项卡中设置
com.google.appengine.application.id
系统属性来配置此项目(通过运行>运行配置,然后将
-Dcom.google.appengine.application.id=projectd
添加到Arguments>VM Arguments部分)。但是,如果您正在访问来自不同项目的数据集(例如
bigquery公共数据
数据集),则需要显式配置
bigquery
生成器,如下所示:

BigQueryOptions.newBuilder()
  .setProjectId("projectID")
  .build().getService();
最后,还必须通过将以下内容添加到
pom.xml
中来包含
appengine-api-1.0-sdk
依赖项:

<dependency>
  <groupId>com.google.appengine</groupId>
  <artifactId>appengine-api-1.0-sdk</artifactId>
  <version>1.9.50</version>
</dependency>

com.google.appengine

.

这听起来像是你在点击阻止服务使用
gcloud
应用程序默认凭据的按钮。有:重命名(或删除)
google cloud sdk/platform/google\u appengine/google/appengine/tools/java/lib/shared/appengine remote api.jar

您还需要配置用于存储和访问BigQuery数据集的GCP项目。可以通过在启动配置的参数选项卡中设置
com.google.appengine.application.id
系统属性来配置此项目(通过运行>运行配置,然后将
-Dcom.google.appengine.application.id=projectd
添加到Arguments>VM Arguments部分)。但是,如果您正在访问来自不同项目的数据集(例如
bigquery公共数据
数据集),则需要显式配置
bigquery
生成器,如下所示:

BigQueryOptions.newBuilder()
  .setProjectId("projectID")
  .build().getService();
最后,还必须通过将以下内容添加到
pom.xml
中来包含
appengine-api-1.0-sdk
依赖项:

<dependency>
  <groupId>com.google.appengine</groupId>
  <artifactId>appengine-api-1.0-sdk</artifactId>
  <version>1.9.50</version>
</dependency>

com.google.appengine

.

应将以下内容添加到maven项目的pom.xml中

    <!--Google Bigquery-->
    <dependency>
        <groupId>com.google.cloud</groupId>
        <artifactId>google-cloud-bigquery</artifactId>
        <version>0.8.0-beta</version>
    </dependency>

应将以下内容添加到maven项目的pom.xml中

    <!--Google Bigquery-->
    <dependency>
        <groupId>com.google.cloud</groupId>
        <artifactId>google-cloud-bigquery</artifactId>
        <version>0.8.0-beta</version>
    </dependency>

一个问题可能是项目没有启用BigQuery API。如果启用了,您可以尝试直接从代码加载服务帐户密钥文件。请参阅:一个问题可能是项目没有启用BigQuery API。如果启用了,您可以尝试加载服务帐户密钥文件直接从代码中获取。请参阅: