本文整理汇总了Java中org.apache.avro.LogicalTypes.Decimal方法的典型用法代码示例。如果您正苦于以下问题:Java LogicalTypes.Decimal方法的具体用法?Java LogicalTypes.Decimal怎么用?Java LogicalTypes.Decimal使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类org.apache.avro.LogicalTypes
的用法示例。
在下文中一共展示了LogicalTypes.Decimal方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: convertLogicalType
import org.apache.avro.LogicalTypes; //导入方法依赖的package包/类
private OriginalType convertLogicalType(LogicalType logicalType) {
if (logicalType == null) {
return null;
} else if (logicalType instanceof LogicalTypes.Decimal) {
return OriginalType.DECIMAL;
} else if (logicalType instanceof LogicalTypes.Date) {
return OriginalType.DATE;
} else if (logicalType instanceof LogicalTypes.TimeMillis) {
return OriginalType.TIME_MILLIS;
} else if (logicalType instanceof LogicalTypes.TimeMicros) {
return OriginalType.TIME_MICROS;
} else if (logicalType instanceof LogicalTypes.TimestampMillis) {
return OriginalType.TIMESTAMP_MILLIS;
} else if (logicalType instanceof LogicalTypes.TimestampMicros) {
return OriginalType.TIMESTAMP_MICROS;
}
return null;
}
示例2: convertToPentahoType
import org.apache.avro.LogicalTypes; //导入方法依赖的package包/类
private Object convertToPentahoType( int pentahoType, ByteBuffer avroData, Schema.Field field ) {
Object pentahoData = null;
if ( avroData != null ) {
try {
switch ( pentahoType ) {
case ValueMetaInterface.TYPE_BIGNUMBER:
Conversions.DecimalConversion converter = new Conversions.DecimalConversion();
Schema schema = field.schema();
if ( schema.getType().equals( Schema.Type.UNION ) ) {
List<Schema> schemas = field.schema().getTypes();
for ( Schema s : schemas ) {
if ( !s.getName().equalsIgnoreCase( "null" ) ) {
schema = s;
break;
}
}
}
Object precision = schema.getObjectProp( AvroSpec.DECIMAL_PRECISION );
Object scale = schema.getObjectProp( AvroSpec.DECIMAL_SCALE );
LogicalTypes.Decimal decimalType = LogicalTypes.decimal( Integer.parseInt( precision.toString() ), Integer.parseInt( scale.toString() ) );
pentahoData = converter.fromBytes( avroData, avroSchema, decimalType );
break;
case ValueMetaInterface.TYPE_BINARY:
pentahoData = new byte[avroData.remaining()];
avroData.get( (byte[]) pentahoData );
break;
}
} catch ( Exception e ) {
// If unable to do the type conversion just ignore. null will be returned.
}
}
return pentahoData;
}
示例3: convertField
import org.apache.avro.LogicalTypes; //导入方法依赖的package包/类
@SuppressWarnings("deprecation")
private Type convertField(String fieldName, Schema schema, Type.Repetition repetition) {
Types.PrimitiveBuilder<PrimitiveType> builder;
Schema.Type type = schema.getType();
if (type.equals(Schema.Type.BOOLEAN)) {
builder = Types.primitive(BOOLEAN, repetition);
} else if (type.equals(Schema.Type.INT)) {
builder = Types.primitive(INT32, repetition);
} else if (type.equals(Schema.Type.LONG)) {
builder = Types.primitive(INT64, repetition);
} else if (type.equals(Schema.Type.FLOAT)) {
builder = Types.primitive(FLOAT, repetition);
} else if (type.equals(Schema.Type.DOUBLE)) {
builder = Types.primitive(DOUBLE, repetition);
} else if (type.equals(Schema.Type.BYTES)) {
builder = Types.primitive(BINARY, repetition);
} else if (type.equals(Schema.Type.STRING)) {
builder = Types.primitive(BINARY, repetition).as(UTF8);
} else if (type.equals(Schema.Type.RECORD)) {
return new GroupType(repetition, fieldName, convertFields(schema.getFields()));
} else if (type.equals(Schema.Type.ENUM)) {
builder = Types.primitive(BINARY, repetition).as(ENUM);
} else if (type.equals(Schema.Type.ARRAY)) {
if (writeOldListStructure) {
return ConversionPatterns.listType(repetition, fieldName,
convertField("array", schema.getElementType(), REPEATED));
} else {
return ConversionPatterns.listOfElements(repetition, fieldName,
convertField(AvroWriteSupport.LIST_ELEMENT_NAME, schema.getElementType()));
}
} else if (type.equals(Schema.Type.MAP)) {
Type valType = convertField("value", schema.getValueType());
// avro map key type is always string
return ConversionPatterns.stringKeyMapType(repetition, fieldName, valType);
} else if (type.equals(Schema.Type.FIXED)) {
builder = Types.primitive(FIXED_LEN_BYTE_ARRAY, repetition)
.length(schema.getFixedSize());
} else if (type.equals(Schema.Type.UNION)) {
return convertUnion(fieldName, schema, repetition);
} else {
throw new UnsupportedOperationException("Cannot convert Avro type " + type);
}
// schema translation can only be done for known logical types because this
// creates an equivalence
LogicalType logicalType = schema.getLogicalType();
if (logicalType != null) {
if (logicalType instanceof LogicalTypes.Decimal) {
builder = builder.as(DECIMAL)
.precision(((LogicalTypes.Decimal) logicalType).getPrecision())
.scale(((LogicalTypes.Decimal) logicalType).getScale());
} else {
OriginalType annotation = convertLogicalType(logicalType);
if (annotation != null) {
builder.as(annotation);
}
}
}
return builder.named(fieldName);
}