2016-07-25 82 views
4

我正在尝试使用gcloud beta模拟器的bigtable模拟器。 我启动仿真器,抢主机名(本地主机)和端口(在这种情况下8885)如何从java连接到正在运行的bigtable模拟器

gcloud测试模拟器的Bigtable开始

执行:在/ usr /本地/ Caskroom /谷歌云SDK /最新/谷歌云SDK /平台/ BigTable中,仿真器/ cbtemulator主机=本地主机--port = 8885

我试图从Java测试客户端连接到模拟器, 这里是我提供:

Configuration conf = BigtableConfiguration.configure(projectId, instanceId); 

if(!Strings.isNullOrEmpty(host)){ 
    conf.set(BigtableOptionsFactory.BIGTABLE_HOST_KEY, host); 
    conf.set(BigtableOptionsFactory.BIGTABLE_PORT_KEY, Integer.toString(port)); 
} 
connection = BigtableConfiguration.connect(configuration); 
try (Table table = connection.getTable("tName")){ 
    table.put(<Put instance>); 
} 

当我执行测试代码我得到:

16:36:37.369 [bigtable-batch-pool-1] INFO com.google.cloud.bigtable.grpc.async.AbstractRetryingRpcListener - Retrying failed call. Failure #1, got: Status{code=UNAVAILABLE, description=null, cause=java.net.ConnectException: Connection refused: localhost/0:0:0:0:0:0:0:1:8885} 
java.net.ConnectException: Connection refused: localhost/0:0:0:0:0:0:0:1:8885 

我使用的库:com.google.cloud.bigtable:bigtable-hbase-1.2:0.9.1

什么我做错了任何想法?

谢谢!

+0

您显示的方式[不是本页所说的启动模拟器的方式](https://cloud.google.com/sdk/gcloud/reference/beta/emulators/bigtable/start)。 –

+0

我不是试图从Java启动它,我试图连接到已经启动的模拟器从Java – user1568967

+0

@JonnyHenly这是一个日志输出,同时运行'gcloud beta模拟器bigtable开始' – user1568967

回答

3

你需要一个额外的配置属性设置:

conf.set(BigtableOptionsFactory.BIGTABLE_USE_PLAINTEXT_NEGOTIATION, true); 

此外,从日志消息,它看起来像它试图连接到IPv6地址,我不认为会工作。仔细检查host是否是有效的IPv4地址。

java客户端将在不久的将来更容易做到这一点。

+0

谢谢!明文谈判取得了诀窍! IP是IPv4,我猜测记录器记录了v4和v6地址 – user1568967

+1

这简单得多! Java客户端现在直接使用适当的环境变量集来支持模拟器:https://cloud.google.com/bigtable/docs/emulator –

相关问题