如何从 java 连接到 运行 bigtable 模拟器
How to connect to a running bigtable emulator from java
我正在尝试使用 gcloud beta 模拟器中的 bigtable 模拟器。
我启动模拟器,获取主机名 (localhost) 和端口(在本例中为 8885)
gcloud beta emulators bigtable start
Executing: /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
知道我做错了什么吗?
谢谢!
您需要设置一项额外配置 属性:
conf.set(BigtableOptionsFactory.BIGTABLE_USE_PLAINTEXT_NEGOTIATION, true);
此外,从日志消息来看,它似乎正在尝试连接到 IPv6 地址,但我认为这不会起作用。仔细检查 host
是否为有效的 IPv4 地址。
java 客户端将在不久的将来简化此操作。
现在可以设置
configuration.set(BigtableOptionsFactory.BIGTABLE_EMULATOR_HOST_KEY,<HOST:PORT>);
连接到模拟器。
“https://github.com/googleapis/java-bigtable/tree/master/google-cloud-bigtable-emulator”也可用于以编程方式启动模拟器以进行测试等
我正在尝试使用 gcloud beta 模拟器中的 bigtable 模拟器。 我启动模拟器,获取主机名 (localhost) 和端口(在本例中为 8885)
gcloud beta emulators bigtable start
Executing: /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
知道我做错了什么吗?
谢谢!
您需要设置一项额外配置 属性:
conf.set(BigtableOptionsFactory.BIGTABLE_USE_PLAINTEXT_NEGOTIATION, true);
此外,从日志消息来看,它似乎正在尝试连接到 IPv6 地址,但我认为这不会起作用。仔细检查 host
是否为有效的 IPv4 地址。
java 客户端将在不久的将来简化此操作。
现在可以设置
configuration.set(BigtableOptionsFactory.BIGTABLE_EMULATOR_HOST_KEY,<HOST:PORT>);
连接到模拟器。
“https://github.com/googleapis/java-bigtable/tree/master/google-cloud-bigtable-emulator”也可用于以编程方式启动模拟器以进行测试等