我目前正在創建一個可以從Hadoop HBase後端讀取Titan頂點的Java代碼。我知道blueprint api在每個TransactionalGraph上都提供了getVertices()方法,但我仍然試圖實現我自己的方法。現在,對於通常的頂點讀取,我已經有了一個工作代碼,可以讀取整個HBase後端並從Titan Graph中獲取所有頂點,但是我在實現分頁時遇到問題。從HBase中讀取Titan頂點的分頁
到目前爲止我的代碼:
Scan scan = new Scan();
Filter pageFilter = new ColumnPaginationFilter(DEFAULT_PAGE_SIZE, currentOffSet);
scan.setFilter(pageFilter);
scan.addFamily(Backend.EDGESTORE_NAME.getBytes());
scan.setMaxVersions(10);
List<Vertex> vertexList = new ArrayList<>(DEFAULT_PAGE_SIZE);
HTablePool pool = new HTablePool(config, DEFAULT_PAGE_SIZE);
ResultScanner scanner = pool.getTable(attributeMap.get("storage.tablename")).getScanner(scan);
但ResultScanner返回整個圖形。
currentOffSet是一個確定當前頁碼的int變量。
我也試過ResultScanner#next(int rowCount)。它工作正常。但在這個過程中,我沒有選擇返回到上一頁。
任何人都可以幫助我嗎?
預先感謝您。
我剛開始評估泰坦,我的理解是曾經無法直接從Hbase讀取/寫入泰坦圖形數據。看起來你說這是可能的。你能指點我的例子,可以告訴我如何做到這一點? – chapstick
上面的代碼是你問的最簡單的例子。列表 vertexList是我用來保存頂點的集合。 'IDHandler.getKeyID(byteBuffer)' 這行實際上是從HBase後端返回頂點ID。現在,一旦我得到頂點ID,獲取頂點實例並不複雜。 我需要的是從HBase Backend和Cassandra讀取數據的簡單方法,因爲Titan不支持全局查詢。如果您想要更好的方式從HBase或Cassandra讀取數據,您可以通過探索後端功能來完成。 –
Pradatta