Tôi đang cố gắng lấy tên cột nhưng không thể tìm cách chỉ lấy tên cột.trong cassandra-cli làm thế nào để có được tất cả các tên cột trong một bảng và làm thế nào để có được nó bằng cách sử dụng hector trong java?
Trong cli tôi thực hiện lệnh describe table nodes
, nó trả lại kết quả:
CREATE TABLE nodes (
key text PRIMARY KEY,
id text,
scores text,
topic1 text,
topic2 text,
topic3 text,
topic4 text,
topics text
) WITH COMPACT STORAGE AND
bloom_filter_fp_chance=0.010000 AND
caching='KEYS_ONLY' AND
comment='' AND
dclocal_read_repair_chance=0.000000 AND
gc_grace_seconds=864000 AND
read_repair_chance=0.100000 AND
replicate_on_write='true' AND
populate_io_cache_on_flush='false' AND
compaction={'class': 'SizeTieredCompactionStrategy'} AND
compression={'sstable_compression': 'SnappyCompressor'};
CREATE INDEX idx_nodes_id ON nodes (id);
Như trình bày trong question này, tôi cố gắng sử dụng lệnh sau đây trong cli:
SELECT column_name FROM system.schema_columnfamilies WHERE keyspace_name = 'ianew' AND columnfamily_name = 'nodes';
nhưng nó đã cho các lỗi:
Bad Request: Undefined name column_name in selection clause
Perhaps you meant to use CQL 2? Try using the -2 option when starting cqlsh.
Sau đó, tôi đã thử với:
SELECT * FROM system.schema_columnfamilies WHERE keyspace_name = 'ianew' AND columnfamily_name = 'nodes';
Nó trả lại tất cả những điều sau đây:
keyspace_name | columnfamily_name | bloom_filter_fp_chance | caching | column_aliases | comment | compaction_strategy_class | compaction_strategy_options | comparator | compression_parameters | default_read_consistency | default_validator | default_write_consistency | gc_grace_seconds | id | key_alias | key_aliases | key_validator | local_read_repair_chance | max_compaction_threshold | min_compaction_threshold | populate_io_cache_on_flush | read_repair_chance | replicate_on_write | subcomparator | type | value_alias
---------------+-------------------+------------------------+-----------+----------------+---------+-----------------------------------------------------------------+-----------------------------+------------------------------------------+-----------------------------------------------------------------------------+--------------------------+------------------------------------------+---------------------------+------------------+------+-----------+-------------+------------------------------------------+--------------------------+--------------------------+--------------------------+----------------------------+--------------------+--------------------+---------------+----------+-------------
ianew | nodes | null | KEYS_ONLY | [] | | org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy | {} | org.apache.cassandra.db.marshal.UTF8Type | {"sstable_compression":"org.apache.cassandra.io.compress.SnappyCompressor"} | null | org.apache.cassandra.db.marshal.UTF8Type | null | 864000 | null | null | [] | org.apache.cassandra.db.marshal.UTF8Type | 0 | 32 | 4 | False | 0.1 | True | null | Standard | null
Như trình bày trong post này, tôi đã cố gắng sử dụng hector trong java:
SliceQuery<String, String, String> query = HFactory.createSliceQuery(keyspace, StringSerializer.get(), StringSerializer.get(), StringSerializer.get());
query.setColumnFamily(columnFamilyName);
query.setKey("key");
query.setRange(null, null, false, Integer.MAX_VALUE);
ColumnSliceIterator<String, String, String> iterator = new ColumnSliceIterator<String, String, String>(query, null, "\uFFFF", false);
while (iterator.hasNext()) {
HColumnImpl<String, String> column = (HColumnImpl<String, String>) iterator.next();
System.out.println("Column name = " + column.getName() + "; Column value = " + column.getValue());
colNames.add(column.getName());
}
nhưng nó lại không có kết quả.
Tôi muốn đầu ra được cái gì đó như:
TABLE nodes:
Columns: key text PRIMARY KEY, id text, scores text, topic1 text, topic2 text, topic3 text, topic4 text, topics text
và kết quả tương tự qua Hector.
phiên bản tôi đang sử dụng:
[cqlsh 2.3.0 | Cassandra 1.2.4 | CQL spec 3.0.0 | Thrift protocol 19.35.0]
ya .. Tôi cố gắng tất cả những điều có thể. Nó vẫn dẫn đến lỗi .. bằng truy vấn 'SELECT column_aliases FROM system.schema_columnfamilies WHERE keyspace_name = 'ianew' AND columnfamily_name = 'nodes';', Nó trả về kết quả: 'column_aliases ----------- ----- [] ' –
@NDThokare Tôi sẽ chỉnh sửa câu hỏi. Chúng tôi thực sự là sau schema_columns CF thay vì schema_columnfamilies: http://www.datastax.com/dev/blog/the-data-dictionary-in-cassandra-1-2 –
cảm ơn @Lyuben, đúng vậy .. bây giờ tôi có kết quả bằng cách sử dụng 'SELECT column_name FROM system.schema_columnfamilies WHERE keyspace_name = 'ianew' AND columnfamily_name = 'nodes';' –