@Override public ValueWriter<?> union(Schema union, List<ValueWriter<?>> options) { Preconditions.checkArgument(options.contains(ValueWriters.nulls()), "Cannot create writer for non-option union: " + union); Preconditions.checkArgument(options.size() == 2, "Cannot create writer for non-option union: " + union); if (union.getTypes().get(0).getType() == Schema.Type.NULL) { return ValueWriters.option(0, options.get(1)); } else { return ValueWriters.option(1, options.get(0)); } }
switch (logicalType.getName()) { case "date": return ValueWriters.ints(); return ValueWriters.longs(); return ValueWriters.decimal(decimal.getPrecision(), decimal.getScale()); return ValueWriters.uuids(); return ValueWriters.nulls(); case BOOLEAN: return ValueWriters.booleans(); case INT: return ValueWriters.ints(); case LONG: return ValueWriters.longs(); case FLOAT: return ValueWriters.floats(); case DOUBLE: return ValueWriters.doubles(); case STRING: return ValueWriters.strings(); case FIXED: return ValueWriters.genericFixed(primitive.getFixedSize()); case BYTES: return ValueWriters.byteBuffers(); default: throw new IllegalArgumentException("Unsupported type: " + primitive);
case "date": return ValueWriters.ints(); return ValueWriters.longs(); return ValueWriters.uuids(); return ValueWriters.nulls(); case BOOLEAN: return ValueWriters.booleans(); case INT: return ValueWriters.ints(); case LONG: return ValueWriters.longs(); case FLOAT: return ValueWriters.floats(); case DOUBLE: return ValueWriters.doubles(); case STRING: return SparkValueWriters.strings(); case FIXED: return ValueWriters.fixed(primitive.getFixedSize()); case BYTES: return ValueWriters.bytes(); default: throw new IllegalArgumentException("Unsupported type: " + primitive);
@Override public ValueWriter<?> array(Schema array, ValueWriter<?> elementWriter) { if (array.getLogicalType() instanceof LogicalMap) { ValueWriters.StructWriter<?> keyValueWriter = (ValueWriters.StructWriter<?>) elementWriter; return ValueWriters.arrayMap(keyValueWriter.writer(0), keyValueWriter.writer(1)); } return ValueWriters.array(elementWriter); }
return ValueWriters.decimal(decimal.getPrecision(), decimal.getScale()); return ValueWriters.uuids(); return ValueWriters.nulls(); case BOOLEAN: return ValueWriters.booleans(); case INT: return ValueWriters.ints(); case LONG: return ValueWriters.longs(); case FLOAT: return ValueWriters.floats(); case DOUBLE: return ValueWriters.doubles(); case STRING: return ValueWriters.strings(); case FIXED: return ValueWriters.fixed(primitive.getFixedSize()); case BYTES: return ValueWriters.byteBuffers(); default: throw new IllegalArgumentException("Unsupported type: " + primitive);
@Override public ValueWriter<?> array(Schema array, ValueWriter<?> elementWriter) { if (array.getLogicalType() instanceof LogicalMap) { ValueWriters.StructWriter<?> keyValueWriter = (ValueWriters.StructWriter<?>) elementWriter; return ValueWriters.arrayMap(keyValueWriter.writer(0), keyValueWriter.writer(1)); } return ValueWriters.array(elementWriter); }
@Override public ValueWriter<?> union(Schema union, List<ValueWriter<?>> options) { Preconditions.checkArgument(options.contains(ValueWriters.nulls()), "Cannot create writer for non-option union: " + union); Preconditions.checkArgument(options.size() == 2, "Cannot create writer for non-option union: " + union); if (union.getTypes().get(0).getType() == Schema.Type.NULL) { return ValueWriters.option(0, options.get(1)); } else { return ValueWriters.option(1, options.get(0)); } }
@Override public ValueWriter<?> union(Schema union, List<ValueWriter<?>> options) { Preconditions.checkArgument(options.contains(ValueWriters.nulls()), "Cannot create writer for non-option union: " + union); Preconditions.checkArgument(options.size() == 2, "Cannot create writer for non-option union: " + union); if (union.getTypes().get(0).getType() == Schema.Type.NULL) { return ValueWriters.option(0, options.get(1)); } else { return ValueWriters.option(1, options.get(0)); } }