public void printState() { log(currentLevel + ", " + fieldsWritten[currentLevel] + ": " + Arrays.toString(currentColumnIO.getFieldPath()) + " r:" + r[currentLevel]); if (r[currentLevel] > currentColumnIO.getRepetitionLevel()) { // sanity check throw new InvalidRecordException(r[currentLevel] + "(r) > " + currentColumnIO.getRepetitionLevel() + " ( schema r)"); } }
@Override public void addLong(long value) { if (DEBUG) log("addLong("+value+")"); getColumnWriter().write(value, r[currentLevel], currentColumnIO.getDefinitionLevel()); setRepetitionLevel(); if (DEBUG) printState(); }
@Override public void addBoolean(boolean value) { if (DEBUG) log("addBoolean(" + value + ")"); emptyField = false; getColumnWriter().write(value, r[currentLevel], currentColumnIO.getDefinitionLevel()); setRepetitionLevel(); if (DEBUG) printState(); }
@Override public void addLong(long value) { if (DEBUG) log("addLong(" + value + ")"); emptyField = false; getColumnWriter().write(value, r[currentLevel], currentColumnIO.getDefinitionLevel()); setRepetitionLevel(); if (DEBUG) printState(); }
@Override public void startField(String field, int index) { try { if (DEBUG) log("startField(" + field + ", " + index + ")"); currentColumnIO = ((GroupColumnIO)currentColumnIO).getChild(index); emptyField = true; if (DEBUG) printState(); } catch (RuntimeException e) { throw new ParquetEncodingException("error starting field " + field + " at " + index, e); } }
@Override public void endMessage() { writeNullForMissingFieldsAtCurrentLevel(); columns.endRecord(); if (DEBUG) log("< MESSAGE END >"); if (DEBUG) printState(); }
@Override public void addDouble(double value) { if (DEBUG) log("addDouble("+value+")"); getColumnWriter().write(value, r[currentLevel], currentColumnIO.getDefinitionLevel()); setRepetitionLevel(); if (DEBUG) printState(); }
@Override public void addBinary(Binary value) { if (DEBUG) log("addBinary("+value.length()+" bytes)"); getColumnWriter().write(value, r[currentLevel], currentColumnIO.getDefinitionLevel()); setRepetitionLevel(); if (DEBUG) printState(); }
@Override public void endField(String field, int index) { if (DEBUG) log("endField("+field+", "+index+")"); currentColumnIO = currentColumnIO.getParent(); currentIndex[currentLevel] = index + 1; r[currentLevel] = currentLevel == 0 ? 0 : r[currentLevel - 1]; if (DEBUG) printState(); }
@Override public void addBinary(Binary value) { if (DEBUG) log("addBinary(" + value.length() + " bytes)"); emptyField = false; getColumnWriter().write(value, r[currentLevel], currentColumnIO.getDefinitionLevel()); setRepetitionLevel(); if (DEBUG) printState(); }
@Override public void startMessage() { if (DEBUG) log("< MESSAGE START >"); currentColumnIO = MessageColumnIO.this; r[0] = 0; int numberOfFieldsToVisit = ((GroupColumnIO)currentColumnIO).getChildrenCount(); fieldsWritten[0].reset(numberOfFieldsToVisit); if (DEBUG) printState(); }
@Override public void addDouble(double value) { if (DEBUG) log("addDouble(" + value + ")"); emptyField = false; getColumnWriter().write(value, r[currentLevel], currentColumnIO.getDefinitionLevel()); setRepetitionLevel(); if (DEBUG) printState(); }
@Override public void addFloat(float value) { if (DEBUG) log("addFloat(" + value + ")"); emptyField = false; getColumnWriter().write(value, r[currentLevel], currentColumnIO.getDefinitionLevel()); setRepetitionLevel(); if (DEBUG) printState(); }
@Override public void addInteger(int value) { if (DEBUG) log("addInt(" + value + ")"); emptyField = false; getColumnWriter().write(value, r[currentLevel], currentColumnIO.getDefinitionLevel()); setRepetitionLevel(); if (DEBUG) printState(); }
@Override public void startGroup() { if (DEBUG) log("startGroup()"); ++ currentLevel; r[currentLevel] = r[currentLevel - 1]; int fieldsCount = ((GroupColumnIO)currentColumnIO).getChildrenCount(); fieldsWritten[currentLevel].reset(fieldsCount); if (DEBUG) printState(); }
@Override public void endGroup() { if (DEBUG) log("endGroup()"); emptyField = false; writeNullForMissingFieldsAtCurrentLevel(); -- currentLevel; setRepetitionLevel(); if (DEBUG) printState(); }
@Override public void endField(String field, int index) { if (DEBUG) log("endField(" + field + ", " + index + ")"); currentColumnIO = currentColumnIO.getParent(); if (emptyField) { throw new ParquetEncodingException("empty fields are illegal, the field should be ommited completely instead"); } fieldsWritten[currentLevel].markWritten(index); r[currentLevel] = currentLevel == 0 ? 0 : r[currentLevel - 1]; if (DEBUG) printState(); }
@Override public void addFloat(float value) { if (DEBUG) log("addFloat("+value+")"); getColumnWriter().write(value, r[currentLevel], currentColumnIO.getDefinitionLevel()); setRepetitionLevel(); if (DEBUG) printState(); }
@Override public void startField(String field, int index) { try { if (DEBUG) log("startField("+field+", "+index+")"); writeNullForMissingFields(index - 1); currentColumnIO = ((GroupColumnIO)currentColumnIO).getChild(index); currentIndex[currentLevel] = index; if (DEBUG) printState(); } catch (RuntimeException e) { throw new ParquetEncodingException("error starting field " + field + " at " + index, e); } }
@Override public void startMessage() { if (DEBUG) log("< MESSAGE START >"); currentColumnIO = MessageColumnIO.this; r[0] = 0; currentIndex[0] = 0; if (DEBUG) printState(); }