in odps-sdk-impl/odps-common-local/src/main/java/com/aliyun/odps/local/common/utils/LocalWritableUtils.java [277:339]
public static Class getWritableClass(TypeInfo typeInfo) {
if (typeInfo == TypeInfoFactory.STRING) {
return Text.class;
}
if (typeInfo == TypeInfoFactory.TINYINT) {
return ByteWritable.class;
}
if (typeInfo == TypeInfoFactory.SMALLINT) {
return ShortWritable.class;
}
if (typeInfo == TypeInfoFactory.INT) {
return IntWritable.class;
}
if (typeInfo == TypeInfoFactory.BIGINT) {
return LongWritable.class;
}
if (typeInfo == TypeInfoFactory.BOOLEAN) {
return BooleanWritable.class;
}
if (typeInfo == TypeInfoFactory.FLOAT) {
return FloatWritable.class;
}
if (typeInfo == TypeInfoFactory.DOUBLE) {
return DoubleWritable.class;
}
if (typeInfo == TypeInfoFactory.DECIMAL) {
return BigDecimalWritable.class;
}
if (typeInfo == TypeInfoFactory.DATETIME) {
return DatetimeWritable.class;
}
if (typeInfo == TypeInfoFactory.TIMESTAMP) {
return TimestampWritable.class;
}
if (typeInfo == TypeInfoFactory.DATE) {
return DateWritable.class;
}
if (typeInfo instanceof CharTypeInfo) {
return CharWritable.class;
}
if (typeInfo instanceof VarcharTypeInfo) {
return VarcharWritable.class;
}
if (typeInfo == TypeInfoFactory.BINARY) {
return BytesWritable.class;
}
if (typeInfo == TypeInfoFactory.INTERVAL_DAY_TIME) {
return IntervalDayTimeWritable.class;
}
if (typeInfo == TypeInfoFactory.INTERVAL_YEAR_MONTH) {
return IntervalYearMonth.class;
}
if (typeInfo instanceof ArrayTypeInfo) {
return ArrayWritable.class;
}
if (typeInfo instanceof MapTypeInfo) {
return MapWritable.class;
}
if (typeInfo instanceof StructTypeInfo) {
return StructWritable.class;
}
throw new IllegalArgumentException("unsupported data type:" + typeInfo.getTypeName());
}