private boolean read(TachyonFS tachyonClient) throws IOException { boolean pass = true; LOG.debug("Reading data..."); RawTable rawTable = tachyonClient.getRawTable(mId); ByteBuffer metadata = rawTable.getMetadata(); LOG.debug("Metadata: "); metadata.order(ByteOrder.nativeOrder()); for (int k = -mMetadataLength; k < 0; k ++) { pass = pass && (metadata.getInt() == k); } for (int column = 0; column < COLS; column ++) { RawColumn rawColumn = rawTable.getRawColumn(column); TachyonFile tFile = rawColumn.getPartition(0); FileInStream is = tFile.getInStream(mReadType); ByteBuffer buf = ByteBuffer.allocate(mDataLength * 4); is.read(buf.array()); buf.order(ByteOrder.nativeOrder()); for (int k = 0; k < mDataLength; k ++) { pass = pass && (buf.getInt() == k); } is.close(); } return pass; }
private void write(TachyonFS tachyonClient) throws IOException { RawTable rawTable = tachyonClient.getRawTable(mTablePath); LOG.debug("Writing data..."); for (int column = 0; column < COLS; column ++) { RawColumn rawColumn = rawTable.getRawColumn(column); if (!rawColumn.createPartition(0)) { throw new IOException("Failed to create partition in table " + mTablePath + " under column " + column); } ByteBuffer buf = ByteBuffer.allocate(mDataLength * 4); buf.order(ByteOrder.nativeOrder()); for (int k = 0; k < mDataLength; k ++) { buf.putInt(k); } buf.flip(); TachyonFile tFile = rawColumn.getPartition(0); FileOutStream os = tFile.getOutStream(mWriteType); os.write(buf.array()); os.close(); } }