2016-07-29 22 views
2

Ich versuche, eine Tabelle mit einer einzelnen Spaltenfamilie zu erstellen (Ausrichtung auf den Google Cloud Bigtable-Emulator mithilfe der Java-Clientbibliothek 0.9.1).Google Cloud Bigtable-Emulator scheint Spaltenfamilien zu löschen

private void setupTable() throws IOException { 

    TableName name = TableName.valueOf("EndOfDayPriceUnadjusted"); 
    try(Connection connection = BigtableConfiguration.connect(hbaseConf)){ 
     HTableDescriptor descriptor = new HTableDescriptor(name); 
     descriptor.addFamily(new HColumnDescriptor("EOD")); 

     connection.getAdmin().createTable(descriptor); 
     // calling HTableDescriptor desc = connection.getAdmin().getTableDescriptor(name); yields the same result 
     Table t = connection.getTable(name); 
     if(t.getTableDescriptor().getColumnFamilies().length == 0) 
      log.error("no column families."); 
     else 
      log.info("table with column family created."); 
    } 
} 

Mein Problem ist, dass die Tabelle nach der Erstellung, der abgerufene Descriptor nie die EOD Familie enthält; Daher schlagen alle Aufrufe zum Speichern von Daten in dieser Spaltenfamilie fehl.

Fehle ich etwas oder ist es eine Einschränkung des Emulators?

+3

Dieses Problem mit dem Emulator ist. Wir arbeiten daran, es zu reparieren. –

+1

Dieser Fehler wurde in den letzten Versionen des Emulators behoben: https://cloud.google.com/bigtable/docs/emulator –

Antwort

3

Ein Emulator spezifische Abhilfe Sie, bis der Fehler behoben verwenden können, ist die Spalte Familie nach dem Erstellen der Tabelle hinzuzufügen:

connector.getAdmin().addColumn(
    descriptor.getTableName(), new HColumnDescriptor("EOD"));