如何从java连接到正在运行的bigtable模拟器

问题描述 投票:4回答:1

我正在尝试使用gcloud beta模拟器中的bigtable模拟器。我启动模拟器,获取主机名(localhost)和端口(在本例中为8885)

gcloud beta模拟器的重要性开始

执行:/ usr / local / Caskroom / google-cloud-sdk / latest / google-cloud-sdk / platform / bigtable-emulator / cbtemulator --host = localhost --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

我知道我做错了什么?

谢谢 !

java bigtable google-cloud-bigtable
1个回答
3
投票

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

conf.set(BigtableOptionsFactory.BIGTABLE_USE_PLAINTEXT_NEGOTIATION, true);

此外,从日志消息看起来它似乎正在尝试连接到IPv6地址,我认为这不会起作用。仔细检查host是否为有效的IPv4地址。

java客户端将在不久的将来使这更容易。

© www.soinside.com 2019 - 2024. All rights reserved.