Package org.apache.avro.specific

Examples of org.apache.avro.specific.SpecificDatumWriter


              m.put(col.getFirst(), new Text(toBytes(j++)), new Value(toBytes(item)));
              count++;
            }
            break;
          case RECORD:
            SpecificDatumWriter writer = new SpecificDatumWriter(field.schema());
            ByteArrayOutputStream os = new ByteArrayOutputStream();
            BinaryEncoder encoder = new BinaryEncoder(os);
            writer.write(o, encoder);
            encoder.flush();
            m.put(col.getFirst(), col.getSecond(), new Value(os.toByteArray()));
            break;
          default:
            m.put(col.getFirst(), col.getSecond(), new Value(toBytes(o)));
View Full Code Here


    return reader;
  }

  @SuppressWarnings("rawtypes")
  private SpecificDatumWriter getDatumWriter(String schemaId, Schema fieldSchema) {
    SpecificDatumWriter writer = (SpecificDatumWriter<?>) writerMap
        .get(schemaId);
    if (writer == null) {
      writer = new SpecificDatumWriter(fieldSchema);// ignore dirty bits
      writerMap.put(schemaId, writer);
    }

    return writer;
  }
View Full Code Here

    case MAP:
    case ARRAY:
    case RECORD:
      byte[] data = null;
      try {
        @SuppressWarnings("rawtypes")
        SpecificDatumWriter writer = getDatumWriter(fieldSchema.getFullName(),
            fieldSchema);
        data = IOUtils.serialize(writer, fieldSchema, fieldValue);
      } catch (IOException e) {
        LOG.error(e.getMessage(), e.getStackTrace().toString());
      }
      fieldValue = data;
      break;
    case BYTES:
      fieldValue = ((ByteBuffer) fieldValue).array();
      break;
    case ENUM:
    case STRING:
      fieldValue = fieldValue.toString();
      break;
    case UNION:
      // If field's schema is null and one type, we do undertake serialization.
      // All other types are serialized.
      if (fieldSchema.getTypes().size() == 2 && isNullable(fieldSchema)) {
        int schemaPos = getUnionSchema(fieldValue, fieldSchema);
        Schema unionSchema = fieldSchema.getTypes().get(schemaPos);
        fieldValue = serializeFieldValue(unionSchema, fieldValue);
      } else {
        byte[] serilazeData = null;
        try {
          @SuppressWarnings("rawtypes")
          SpecificDatumWriter writer = getDatumWriter(
              String.valueOf(fieldSchema.hashCode()), fieldSchema);
          serilazeData = IOUtils.serialize(writer, fieldSchema, fieldValue);
        } catch (IOException e) {
          LOG.error(e.getMessage(), e.getStackTrace().toString());
View Full Code Here

    s2.name = new Utf8("bar");
    s2.kind = Simple.Kind.BAR;
    s2.hash = new Simple.MD5();
    s2.hash.bytes(new byte[] {0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,6});
    check(Simple.TestRecord._SCHEMA, s1, s2, true,
          new SpecificDatumWriter(Simple.TestRecord._SCHEMA),
          SpecificData.get());
    s2.kind = Simple.Kind.BAZ;
    check(Simple.TestRecord._SCHEMA, s1, s2, true,
          new SpecificDatumWriter(Simple.TestRecord._SCHEMA),
          SpecificData.get());
 
View Full Code Here

    s2.kind = Kind.BAR;
    s2.hash = new MD5();
    s2.hash.bytes(new byte[] {0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,6});
    Schema schema = SpecificData.get().getSchema(TestRecord.class);

    check(schema, s1, s2, true, new SpecificDatumWriter(schema),
          SpecificData.get());
    s2.kind = Kind.BAZ;
    check(schema, s1, s2, true, new SpecificDatumWriter(schema),
          SpecificData.get());
 
View Full Code Here

            m.put(col.getFirst(), new Text(toBytes(j++)), new Value(toBytes(item)));
            count++;
          }
          break;
        case RECORD:
          SpecificDatumWriter writer = new SpecificDatumWriter(field.schema());
          ByteArrayOutputStream os = new ByteArrayOutputStream();
          BinaryEncoder encoder = new BinaryEncoder(os);
          writer.write(o, encoder);
          encoder.flush();
          m.put(col.getFirst(), col.getSecond(), new Value(os.toByteArray()));
          break;
        default:
          m.put(col.getFirst(), col.getSecond(), new Value(toBytes(o)));
View Full Code Here

    case DOUBLE:  return Bytes.toBytes((Double)o);
    case BOOLEAN: return (Boolean)o ? new byte[] {1} : new byte[] {0};
    case ENUM:    return new byte[] { (byte)((Enum<?>) o).ordinal() };
    case RECORD:
      Map<String, SpecificDatumWriter<?>> writerMap = writerMaps.get();
      SpecificDatumWriter writer = writerMap.get(schema.getFullName());
      if (writer == null) {
        writer = new SpecificDatumWriter(schema);
        writerMap.put(schema.getFullName(),writer);
      }
     
      BinaryEncoderWithStream encoder = encoders.get();
      if (encoder == null) {
        encoder = new BinaryEncoderWithStream(new ByteArrayOutputStream());
        encoders.set(encoder);
      }
      //reset the buffers
      ByteArrayOutputStream os = (ByteArrayOutputStream) encoder.getOut();
      os.reset();
     
      writer.write(o, encoder);
      encoder.flush();
      return os.toByteArray();
    default: throw new RuntimeException("Unknown type: "+type);
    }
  }
View Full Code Here

    try {
      final ByteArrayOutputStream jsonOutputStream = new ByteArrayOutputStream();
      final JsonEncoder jsonEncoder =
          EncoderFactory.get().jsonEncoder(schema, jsonOutputStream);

      final SpecificDatumWriter writer = new SpecificDatumWriter(record.getClass());
      writer.write(record, jsonEncoder);
      jsonEncoder.flush();
      return Bytes.toString(jsonOutputStream.toByteArray());
    } catch (IOException ioe) {
      throw new RuntimeException("Internal error: " + ioe);
    }
View Full Code Here

    return reader;
  }

  @SuppressWarnings("rawtypes")
  private SpecificDatumWriter getDatumWriter(String schemaId, Schema fieldSchema) {
    SpecificDatumWriter writer = (SpecificDatumWriter<?>) writerMap
        .get(schemaId);
    if (writer == null) {
      writer = new SpecificDatumWriter(fieldSchema);// ignore dirty bits
      writerMap.put(schemaId, writer);
    }

    return writer;
  }
View Full Code Here

    case MAP:
    case ARRAY:
    case RECORD:
      byte[] data = null;
      try {
        @SuppressWarnings("rawtypes")
        SpecificDatumWriter writer = getDatumWriter(fieldSchema.getFullName(),
            fieldSchema);
        data = IOUtils.serialize(writer, fieldSchema, fieldValue);
      } catch (IOException e) {
        LOG.error(e.getMessage(), e.getStackTrace().toString());
      }
      fieldValue = data;
      break;
    case BYTES:
      fieldValue = ((ByteBuffer) fieldValue).array();
      break;
    case ENUM:
    case STRING:
      fieldValue = fieldValue.toString();
      break;
    case UNION:
      // If field's schema is null and one type, we do undertake serialization.
      // All other types are serialized.
      if (fieldSchema.getTypes().size() == 2 && isNullable(fieldSchema)) {
        int schemaPos = getUnionSchema(fieldValue, fieldSchema);
        Schema unionSchema = fieldSchema.getTypes().get(schemaPos);
        fieldValue = serializeFieldValue(unionSchema, fieldValue);
      } else {
        byte[] serilazeData = null;
        try {
          @SuppressWarnings("rawtypes")
          SpecificDatumWriter writer = getDatumWriter(
              String.valueOf(fieldSchema.hashCode()), fieldSchema);
          serilazeData = IOUtils.serialize(writer, fieldSchema, fieldValue);
        } catch (IOException e) {
          LOG.error(e.getMessage(), e.getStackTrace().toString());
View Full Code Here

TOP

Related Classes of org.apache.avro.specific.SpecificDatumWriter

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.