2016-07-25 45 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 –

相關問題