【问题标题】:Connect to Cloud Bigtable from Google App Engine从 Google App Engine 连接到 Cloud Bigtable
【发布时间】:2015-09-15 01:25:03
【问题描述】:

我似乎无法从 AppEngine 上运行的 Java 类创建连接。

我使用以下库/依赖项:

<dependency>
   <groupId>com.google.cloud.bigtable</groupId>
   <artifactId>bigtable-hbase-1.1</artifactId>
   <version>0.1.9</version>
</dependency>

还有以下几行代码:

import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.*;
Configuration conf = HBaseConfiguration.create();
connection  = ConnectionFactory.createConnection(conf);

ConnectionFactory.createConnection() 方法似乎试图使用受限类。

您能帮我们解释一下如何在 GAE 上使用它吗?

在 devserver 上本地运行时出现以下错误:

 Caused by: java.lang.NoClassDefFoundError: java.lang.management.ManagementFactory is a restricted class. Please see the Google  App Engine developer's guide for more details.
    at     com.google.appengine.tools.development.agent.runtime.Runtime.reject(Runtime.java:52)
        at org.apache.hadoop.util.ReflectionUtils.<clinit>(ReflectionUtils.java:137)
        at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:191)
    at com.google.appengine.tools.development.agent.runtime.RuntimeHelper.checkRestricted(RuntimeHelper.java:70)
    at com.google.appengine.tools.development.agent.runtime.Runtime.checkRestricted(Runtime.java:65)
    at org.apache.hadoop.hbase.security.UserProvider.instantiate(UserProvider.java:45)
    at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:214)
    at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:119)
    at org.energyworx.datastore.BigTableTSStorage.<init>(BigTableTSStorage.java:104)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at java.lang.Class.newInstance(Class.java:379)
    at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:373)
    ... 71 more

【问题讨论】:

    标签: google-app-engine google-cloud-bigtable


    【解决方案1】:

    我已在 GitHub 上更新了示例。

    【讨论】:

    • 嗯,刚看了你的帖子,看到你说的“只能在云端运行”,如何在本地运行进行开发?这个还不支持?由于 Jetty one 不支持 GAE API,我们无法使用该 API 进行测试。
    • 最新的 gcloud 只适用于 google 环境,不幸的是它还不支持 Bigtable 用于性能的基于 gRPC 的 API——这就是为什么我们需要一个自定义运行时,我们基于标准之一,但添加 alpn-boot。可以将您的 gcloud 回滚到支持本地调试带有 GAE API 的自定义 VM 的先前版本。
    • 现在应该修复了——谢谢。
    猜你喜欢
    • 1970-01-01
    • 2017-06-17
    • 2020-06-07
    • 1970-01-01
    • 2019-11-27
    • 1970-01-01
    • 1970-01-01
    • 2018-08-15
    • 1970-01-01
    相关资源
    最近更新 更多