大数据核心技术源码分析之-Avro篇-3

由于篇幅大小控制,本篇继续借助分析avro下的package org.apache.avro的

package分析点包括generic,io,ipc,reflect,specific,tool,util

1:package generic

GenericContainer

public interface GenericContainer {
  /** The schema of this instance. */
  Schema getSchema();
}

子类接口GenericArray

public interface GenericArray<T> extends List<T>, GenericContainer {
  T peek();
  void reverse();
}

GenericFixed

public interface GenericFixed extends GenericContainer {
  /** Return the data. */
  byte[] bytes();
}

GenericEnumSymbol

public interface GenericEnumSymbol
    extends GenericContainer, Comparable<GenericEnumSymbol> {
  /** Return the symbol. */
  String toString();
}

另外一个接口

IndexedRecord

public interface IndexedRecord extends GenericContainer {
  void put(int i, Object v);
  Object get(int i);
}

GenericRecord

public interface GenericRecord extends IndexedRecord {
  void put(String key, Object v);
  Object get(String key);
}

看一下GenericRecordBuilder该Builder类

public class GenericRecordBuilder extends RecordBuilderBase<Record> {}

核心方法

 @Override
  public Record build() {
    Record record;
    try {
      record = new GenericData.Record(schema());
    } catch (Exception e) {
      throw new AvroRuntimeException(e);
    }
   
    for (Field field : fields()) {
      Object value;
      try {
        value = getWithDefault(field);
      } catch(IOException e) {
        throw new AvroRuntimeException(e);
      }
      if (value != null) {
        record.put(field.pos(), value);
      }
    }
    return record;
  }

@Override
  public int hashCode() {
    final int prime = 31;
    int result = super.hashCode();
    result = prime * result + ((record == null) ? 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值