【问题标题】:How to read all rows with datatypes from cassandra using java?如何使用java从cassandra读取所有数据类型的行?
【发布时间】:2012-12-15 13:16:36
【问题描述】:

我想读取 Cassandra 中给定键空间和列族的所有数据类型的行。 要读取数据,我尝试使用如下 CQL

CqlQuery<String, String, ByteBuffer> cqlQuery = new CqlQuery<String, String, ByteBuffer>(keyspaceOperator, se, se, be);

cqlQuery.setQuery("select * from colfam1");

QueryResult<CqlRows<String, String, ByteBuffer>> result = cqlQuery.execute();

即使我也尝试过使用 Hector 切片查询 API

 Cluster cluster = HFactory.getOrCreateCluster("Test Cluster", "localhost:9160");

 Keyspace keyspace = HFactory.createKeyspace("rajesh", cluster);
    SliceQuery<String, String, String> sliceQuery = HFactory.createSliceQuery(keyspace, stringSerializer, stringSerializer, stringSerializer);
    sliceQuery.setColumnFamily("colfam1").setKey("key123");
    sliceQuery.setRange("", "", false, 4);

 QueryResult<ColumnSlice<String, String>> result = sliceQuery.execute(); 

但在这两种方式中,我都能读取所有行,但我无法读取数据类型。

谁能帮我用java从cassandra读取数据类型的行值??

【问题讨论】:

    标签: cassandra hector cql


    【解决方案1】:

    读取具有值的行非常简单。但我也想阅读元数据。这是解决方案

    public Map<String, ArrayList<String>>  getMetaData(Client _client, String _keyspace) throws SQLException, NotFoundException, InvalidRequestException, TException{
        ArrayList<String> columnfamilyNames = new ArrayList<String>();
        ArrayList<String> columnNames = new ArrayList<String>();
        ArrayList<String> validationClasses = new ArrayList<String>();
        Map<String, ArrayList<String>> metadataMapList =new HashMap<String,ArrayList<String>>();
        KsDef keyspaceDefinition = _client.describe_keyspace(_keyspace);
        List<CfDef> columnDefinition = keyspaceDefinition.getCf_defs();
        for(int i=0;i<columnDefinition.size();i++){
            List<ColumnDef> columnMetadata = columnDefinition.get(i).getColumn_metadata();
            for(int j=0;j<columnMetadata.size();j++){
                columnfamilyNames.add(columnDefinition.get(i).getName());
                columnNames.add(new String((columnMetadata.get(j).getName())));
                validationClasses.add(columnMetadata.get(j).getValidation_class());
            }
        }
        metadataMapList.put("columnfamilyName", columnfamilyNames);
        metadataMapList.put("ColumnName", columnNames);
        metadataMapList.put("validationClass", validationClasses);
        return metadataMapList;
    }
    

    仅供参考,我在这里使用了 thrift 客户端。

    【讨论】:

      猜你喜欢
      • 2018-04-12
      • 2013-07-13
      • 2014-03-26
      • 2018-03-26
      • 1970-01-01
      • 1970-01-01
      • 2018-07-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多