私はこのようなカサンドラテーブルを持っています:
keyspace_name| columnfamily_name | column_name | component_index |
-------------+-------------------+-------------+-----------------+
aw | test | as_of_date | 0 |
aw | test | data | 1 |
aw | test | record_id | null |
aw | test | upload_time | 1 |
そして、次の形式で挿入される行 (たとえば、slf4j) を出力するトリガーを作成しません。
key = key1
column_name1=value1
column_name2=value2
...
column_namen=valuen
トリガーで列名を取得することは可能ですか? インターネットからの例を試してみましたが、間違ったデータが出力されます。
public Collection<RowMutation> augment(ByteBuffer key, ColumnFamily update) {
String localKey = new String(key.array(), Charset.forName("UTF-8"));
logger.info("key={}.", localKey);
for (Column cell : update) {
try {
String name = ByteBufferUtil.string(cell.name());
logger.info("name={}.", name);
String value = ByteBufferUtil.string(cell.value());
logger.info("value={}.", value);
} catch (Exception e) {
logger.info("Exception={}.", e.getMessage());
}
}
私が理解しているように、私はcell.value()を次のような特定のデータ型に変換する必要があります:
Date date = TimestampType.instance.compose(cell.value());
しかし、フィールドタイプを検出する方法がわからず、ByteBufferUtil.string(cell.name())を使用して列名を取得できない理由がわかりません。