有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用rowid的java扫描accumulo

如何使用Java API仅使用rowid扫描accumulo。例如,当我使用accumulo外壳扫描表格时,accumulo有以下行条目:

12lj314t1u43td1 Documents:Entity [U] {values}

我知道Java中的rowid是“12lj314t1u43td1”。我想检索所有可能的列族和限定符的{values}。我已经查看了扫描仪上的accumulo文档,但他们没有说明如何将范围设置为仅基于rowid返回


共 (2) 个答案

  1. # 1 楼答案

    你可以用scan -b startRow -e endRow扫描shell中的一个范围。有关更多选项,请参见scan help

    注意:如果想要性能,应该使用JavaAPI,但这会为shell提供一个范围

  2. # 2 楼答案

    如果您只对一个rowID感兴趣,则可以使用扫描仪来完成以下操作:

    Scanner scanner = connector.createScanner(myTable, new Authorizations("U"));
    scanner.setRange(new Range("12lj314t1u43td1"));
    
    for(Entry<Key,Value> entry : scanner){
        System.out.println(entry);
    }
    

    这将为您提供每一行“12lj314t1u43td1”。如果您只想要包含文档cf的行,那么可以将其添加到setRange行之后

    scanner.fetchColumnFamily(new Text("Documents"));
    

    或者,如果您只需要实体CQ的文档,您可以这样做

    scanner.fetchColumn(new Text("Documents"), new Text("Entity"));
    

    如果要查找大量不连续的行,那么可能需要尝试BatchScanner。也可以使用大量迭代器和正则表达式,但这应该能满足您的需求