/** * @param writer * @param appender * @param array * @param start * @param length * @return the number of bytes that have been flushed, 0 if not get flushed. * @throws HyracksDataException */ public static int appendFieldToWriter(IFrameWriter writer, IFrameFieldAppender appender, byte[] array, int start, int length) throws HyracksDataException { int flushedBytes = 0; if (!appender.appendField(array, start, length)) { flushedBytes = appender.getBuffer().capacity(); appender.write(writer, true); if (!appender.appendField(array, start, length)) { throw HyracksDataException.create(ErrorCode.TUPLE_CANNOT_FIT_INTO_EMPTY_FRAME, length); } } return flushedBytes; }
@Override public void close() throws HyracksDataException { // Check if needed? if (appender.getTupleCount() > 0) { appender.flush(writer, true); } writer.close(); } };
@Override public void open() throws HyracksDataException { appender.reset(frame, true); writer.open(); hdfs = new HDFSFunctions(nodeControllerInfos, hdfsConf); }
/** * @param writer * @param appender * @param accessor * @param tid * @param fid * @return the number of bytes that have been flushed, 0 if not get flushed. * @throws HyracksDataException */ public static int appendFieldToWriter(IFrameWriter writer, IFrameFieldAppender appender, IFrameTupleAccessor accessor, int tid, int fid) throws HyracksDataException { int flushedBytes = 0; if (!appender.appendField(accessor, tid, fid)) { flushedBytes = appender.getBuffer().capacity(); appender.write(writer, true); if (!appender.appendField(accessor, tid, fid)) { int fStartOffset = accessor.getFieldStartOffset(tid, fid); int fLen = accessor.getFieldEndOffset(tid, fid) - fStartOffset; throw HyracksDataException.create(ErrorCode.TUPLE_CANNOT_FIT_INTO_EMPTY_FRAME, fLen); } } return flushedBytes; } }