2016-07-25 11 views
4

Ich versuche, den BigTable-Emulator von Gcloud Beta-Emulatoren zu verwenden. ich den Emulator starten, die Hostnamen greifen (localhost) und Port (in diesem Fall 8885)Wie verbinde ich mich mit einem laufenden Bigtable-Emulator von Java

gcloud beta Emulatoren

Ausführen starten Bigtable:/usr/local/Caskroom/google-Cloud-sdk/latest/google-Cloud-sdk/platform/BigTable-Emulator/cbtemulator --host = localhost --port = 8885

ich an den Emulator von einem Java-Test-Client zu verbinden versuchen, hier ist das, was ich zur Verfügung stellen:

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>); 
} 

Wenn ich den Test-Code ausführen, erhalte ich:

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 

ich die Bibliothek bin mit: com.google.cloud.bigtable:bigtable-hbase-1.2:0.9.1

Jede Idee, was ich falsch mache?

Danke!

+0

Die Art und Weise, wie Sie angezeigt haben, ist [nicht die Art und Weise, wie diese Seite den Emulator startet] (https://cloud.google.com/sdk/gcloud/reference/beta/emulators/bigtable/start). –

+0

Ich versuche nicht, es von Java zu starten, ich versuche, eine Verbindung zu einem bereits gestarteten Emulator aus Java – user1568967

+0

@JonnyHenly Dies ist eine Protokollausgabe beim Ausführen 'gcloud beta Emulatoren bigtable Start' – user1568967

Antwort

3

Sie benötigen eine zusätzliche Konfigurations Eigenschaft festgelegt werden:

conf.set(BigtableOptionsFactory.BIGTABLE_USE_PLAINTEXT_NEGOTIATION, true); 

Auch aus der Log-Nachricht sieht es aus wie es zu einer IPv6-Adresse zu verbinden versucht, das glaube ich nicht arbeiten. Überprüfen Sie, ob host eine gültige IPv4-Adresse ist.

Der Java-Client wird dies in naher Zukunft einfacher machen.

+0

Danke! die Klartext-Verhandlung hat es geschafft! die IP war IPv4, ich denke der Logger loggt sowohl die v4- als auch die v6-Adresse – user1568967

+1

Das ist jetzt einfacher geworden! Der Java-Client unterstützt jetzt den Emulator direkt mit der richtigen Umgebungsvariablen: https://cloud.google.com/bigtable/docs/emulator –