2

単一の列ファミリーを持つテーブルを作成しようとしています (Java クライアント ライブラリ 0.9.1 を使用して Google Cloud Bigtable エミュレーターをターゲットにしています)。

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

私の問題は、テーブルを作成した後、取得された記述子にEODファミリが含まれないことです。したがって、その列ファミリーにデータを格納する呼び出しはすべて失敗します。

何か不足していますか、それともエミュレータの制限ですか?

4

1 に答える 1

3

バグが修正されるまで使用できるエミュレーター固有の回避策は、テーブルの作成後に列ファミリーを追加することです。

connector.getAdmin().addColumn(
    descriptor.getTableName(), new HColumnDescriptor("EOD"));
于 2016-07-29T17:10:13.457 に答える