Java Code Examples for org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector.Category#LIST
The following examples show how to use
org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector.Category#LIST .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: ArgrankUDF.java From incubator-hivemall with Apache License 2.0 | 6 votes |
@Override public ObjectInspector initialize(ObjectInspector[] argOIs) throws UDFArgumentException { if (argOIs.length != 1) { throw new UDFArgumentLengthException( "argrank(array<ANY> a) takes exactly 1 argument: " + argOIs.length); } ObjectInspector argOI0 = argOIs[0]; if (argOI0.getCategory() != Category.LIST) { throw new UDFArgumentException( "argrank(array<ANY> a) expects array<ANY> for the first argument: " + argOI0.getTypeName()); } this.listOI = HiveUtils.asListOI(argOI0); this.elemOI = listOI.getListElementObjectInspector(); return ObjectInspectorFactory.getStandardListObjectInspector( PrimitiveObjectInspectorFactory.writableIntObjectInspector); }
Example 2
Source File: HiveUtils.java From incubator-hivemall with Apache License 2.0 | 6 votes |
@Nullable public static String[] getConstStringArray(@Nonnull final ObjectInspector oi) throws UDFArgumentException { if (!ObjectInspectorUtils.isConstantObjectInspector(oi)) { throw new UDFArgumentException("argument must be a constant value: " + TypeInfoUtils.getTypeInfoFromObjectInspector(oi)); } ConstantObjectInspector constOI = (ConstantObjectInspector) oi; if (constOI.getCategory() != Category.LIST) { throw new UDFArgumentException( "argument must be an array: " + TypeInfoUtils.getTypeInfoFromObjectInspector(oi)); } final List<?> lst = (List<?>) constOI.getWritableConstantValue(); if (lst == null) { return null; } final int size = lst.size(); final String[] ary = new String[size]; for (int i = 0; i < size; i++) { Object o = lst.get(i); if (o != null) { ary[i] = o.toString(); } } return ary; }
Example 3
Source File: HdfsSerDeImportService.java From hadoop-etl-udfs with MIT License | 6 votes |
private static Object getJavaObjectFromFieldData(Object data, ObjectInspector objInsp) { if (data == null) { return null; } if (objInsp.getCategory() == Category.PRIMITIVE) { Object obj = ObjectInspectorUtils.copyToStandardJavaObject(data, objInsp); if (obj instanceof HiveDecimal) { obj = ((HiveDecimal) obj).bigDecimalValue(); } else if (obj instanceof HiveVarchar || obj instanceof HiveChar) { obj = obj.toString(); } else if (obj instanceof byte[]) { obj = Hex.encodeHexString((byte[]) obj); } return obj; } else if (objInsp.getCategory() == Category.LIST) { return getJsonArrayFromFieldData(data, objInsp, Json.createBuilderFactory(null)).build().toString(); } else { return getJsonObjectFromFieldData(data, objInsp, Json.createBuilderFactory(null)).build().toString(); } }
Example 4
Source File: FMPredictGenericUDAF.java From incubator-hivemall with Apache License 2.0 | 6 votes |
@Override public Evaluator getEvaluator(TypeInfo[] typeInfo) throws SemanticException { if (typeInfo.length != 3) { throw new UDFArgumentLengthException( "Expected argument length is 3 but given argument length was " + typeInfo.length); } if (!HiveUtils.isNumberTypeInfo(typeInfo[0])) { throw new UDFArgumentTypeException(0, "Number type is expected for the first argument Wj: " + typeInfo[0].getTypeName()); } if (typeInfo[1].getCategory() != Category.LIST) { throw new UDFArgumentTypeException(1, "List type is expected for the second argument Vjf: " + typeInfo[1].getTypeName()); } ListTypeInfo typeInfo1 = (ListTypeInfo) typeInfo[1]; if (!HiveUtils.isNumberTypeInfo(typeInfo1.getListElementTypeInfo())) { throw new UDFArgumentTypeException(1, "Number type is expected for the element type of list Vjf: " + typeInfo1.getTypeName()); } if (!HiveUtils.isNumberTypeInfo(typeInfo[2])) { throw new UDFArgumentTypeException(2, "Number type is expected for the third argument Xj: " + typeInfo[2].getTypeName()); } return new Evaluator(); }
Example 5
Source File: ArrayFlattenUDF.java From incubator-hivemall with Apache License 2.0 | 6 votes |
@Override public ObjectInspector initialize(ObjectInspector[] argOIs) throws UDFArgumentException { if (argOIs.length != 1) { throw new UDFArgumentException( "array_flatten expects exactly one argument: " + argOIs.length); } this.listOI = HiveUtils.asListOI(argOIs[0]); ObjectInspector listElemOI = listOI.getListElementObjectInspector(); if (listElemOI.getCategory() != Category.LIST) { throw new UDFArgumentException( "array_flatten takes array of array for the argument: " + listOI.toString()); } ListObjectInspector nestedListOI = HiveUtils.asListOI(listElemOI); ObjectInspector elemOI = nestedListOI.getListElementObjectInspector(); return ObjectInspectorFactory.getStandardListObjectInspector( ObjectInspectorUtils.getStandardObjectInspector(elemOI, ObjectInspectorCopyOption.WRITABLE)); }
Example 6
Source File: FFMPredictGenericUDAF.java From incubator-hivemall with Apache License 2.0 | 5 votes |
@Override public Evaluator getEvaluator(@Nonnull TypeInfo[] typeInfo) throws SemanticException { if (typeInfo.length != 5) { throw new UDFArgumentLengthException( "Expected argument length is 5 but given argument length was " + typeInfo.length); } if (!HiveUtils.isNumberTypeInfo(typeInfo[0])) { throw new UDFArgumentTypeException(0, "Number type is expected for the first argument Wi: " + typeInfo[0].getTypeName()); } if (typeInfo[1].getCategory() != Category.LIST) { throw new UDFArgumentTypeException(1, "List type is expected for the second argument Vifj: " + typeInfo[1].getTypeName()); } if (typeInfo[2].getCategory() != Category.LIST) { throw new UDFArgumentTypeException(2, "List type is expected for the third argument Vjfi: " + typeInfo[2].getTypeName()); } ListTypeInfo typeInfo1 = (ListTypeInfo) typeInfo[1]; if (!HiveUtils.isFloatingPointTypeInfo(typeInfo1.getListElementTypeInfo())) { throw new UDFArgumentTypeException(1, "Double or Float type is expected for the element type of list Vifj: " + typeInfo1.getTypeName()); } ListTypeInfo typeInfo2 = (ListTypeInfo) typeInfo[2]; if (!HiveUtils.isFloatingPointTypeInfo(typeInfo2.getListElementTypeInfo())) { throw new UDFArgumentTypeException(2, "Double or Float type is expected for the element type of list Vjfi: " + typeInfo1.getTypeName()); } if (!HiveUtils.isNumberTypeInfo(typeInfo[3])) { throw new UDFArgumentTypeException(3, "Number type is expected for the third argument Xi: " + typeInfo[3].getTypeName()); } if (!HiveUtils.isNumberTypeInfo(typeInfo[4])) { throw new UDFArgumentTypeException(4, "Number type is expected for the third argument Xi: " + typeInfo[4].getTypeName()); } return new Evaluator(); }
Example 7
Source File: HiveUtils.java From incubator-hivemall with Apache License 2.0 | 5 votes |
@Nonnull public static ListObjectInspector asListOI(@Nonnull final ObjectInspector[] argOIs, final int argIndex) throws UDFArgumentException { final ObjectInspector oi = getObjectInspector(argOIs, argIndex); Category category = oi.getCategory(); if (category != Category.LIST) { throw new UDFArgumentException("Expecting ListObjectInspector for argOIs[" + argIndex + "] but got " + TypeInfoUtils.getTypeInfoFromObjectInspector(oi)); } return (ListObjectInspector) oi; }
Example 8
Source File: HiveUtils.java From incubator-hivemall with Apache License 2.0 | 5 votes |
@Nonnull public static ListObjectInspector asListOI(@Nonnull final ObjectInspector oi) throws UDFArgumentException { Category category = oi.getCategory(); if (category != Category.LIST) { throw new UDFArgumentException("Expected List OI but was: " + oi); } return (ListObjectInspector) oi; }
Example 9
Source File: HiveUtils.java From incubator-hivemall with Apache License 2.0 | 5 votes |
@Nullable public static double[] getConstDoubleArray(@Nonnull final ObjectInspector oi) throws UDFArgumentException { if (!ObjectInspectorUtils.isConstantObjectInspector(oi)) { throw new UDFArgumentException("argument must be a constant value: " + TypeInfoUtils.getTypeInfoFromObjectInspector(oi)); } ConstantObjectInspector constOI = (ConstantObjectInspector) oi; if (constOI.getCategory() != Category.LIST) { throw new UDFArgumentException( "argument must be an array: " + TypeInfoUtils.getTypeInfoFromObjectInspector(oi)); } StandardConstantListObjectInspector listOI = (StandardConstantListObjectInspector) constOI; PrimitiveObjectInspector elemOI = HiveUtils.asDoubleCompatibleOI(listOI.getListElementObjectInspector()); final List<?> lst = listOI.getWritableConstantValue(); if (lst == null) { return null; } final int size = lst.size(); final double[] ary = new double[size]; for (int i = 0; i < size; i++) { Object o = lst.get(i); if (o == null) { ary[i] = Double.NaN; } else { ary[i] = PrimitiveObjectInspectorUtils.getDouble(o, elemOI); } } return ary; }
Example 10
Source File: HiveUtils.java From incubator-hivemall with Apache License 2.0 | 5 votes |
public static boolean isFloatingPointListTypeInfo(@Nonnull TypeInfo typeInfo) { if (typeInfo.getCategory() != Category.LIST) { return false; } TypeInfo elemTypeInfo = ((ListTypeInfo) typeInfo).getListElementTypeInfo(); return isFloatingPointTypeInfo(elemTypeInfo); }
Example 11
Source File: HiveUtils.java From incubator-hivemall with Apache License 2.0 | 5 votes |
public static boolean isStringListOI(@Nonnull final ObjectInspector oi) throws UDFArgumentException { Category category = oi.getCategory(); if (category != Category.LIST) { throw new UDFArgumentException("Expected List OI but was: " + oi); } ListObjectInspector listOI = (ListObjectInspector) oi; return isStringOI(listOI.getListElementObjectInspector()); }
Example 12
Source File: HiveCoercionPolicy.java From presto with Apache License 2.0 | 5 votes |
private boolean canCoerceForList(HiveType fromHiveType, HiveType toHiveType) { if (fromHiveType.getCategory() != Category.LIST || toHiveType.getCategory() != Category.LIST) { return false; } HiveType fromElementType = HiveType.valueOf(((ListTypeInfo) fromHiveType.getTypeInfo()).getListElementTypeInfo().getTypeName()); HiveType toElementType = HiveType.valueOf(((ListTypeInfo) toHiveType.getTypeInfo()).getListElementTypeInfo().getTypeName()); return fromElementType.equals(toElementType) || canCoerce(fromElementType, toElementType); }
Example 13
Source File: ArrayNullsRemoverGenericUDF.java From occurrence with Apache License 2.0 | 5 votes |
@Override public ObjectInspector initialize(ObjectInspector[] arguments) throws UDFArgumentException { if (arguments.length != 1) { throw new UDFArgumentException("removeNulls takes an array as argument"); } if (arguments[0].getCategory() != Category.LIST) { throw new UDFArgumentException("removeNulls takes an array as argument"); } retValInspector = (StandardListObjectInspector) ObjectInspectorUtils.getStandardObjectInspector(arguments[0]); if (retValInspector.getListElementObjectInspector().getCategory() != Category.PRIMITIVE) { primitiveObjectInspector = (PrimitiveObjectInspector) retValInspector.getListElementObjectInspector(); } return retValInspector; }
Example 14
Source File: HdfsSerDeImportService.java From hadoop-etl-udfs with MIT License | 5 votes |
private static JsonArrayBuilder getJsonArrayFromFieldData(Object data, ObjectInspector objInsp, JsonBuilderFactory jsonFactory) { JsonArrayBuilder jab = jsonFactory.createArrayBuilder(); ListObjectInspector oi = (ListObjectInspector) objInsp; List<?> list = oi.getList(data); ObjectInspector elemInsp = oi.getListElementObjectInspector(); for (Object obj : list) { if (obj == null) jab.addNull(); else if (elemInsp.getCategory() == Category.PRIMITIVE) { Object o = getJavaObjectFromPrimitiveData(obj, elemInsp); if (o instanceof Integer || o instanceof Short || o instanceof Byte) jab.add((Integer) o); else if (o instanceof Long) jab.add((Long) o); else if (o instanceof Float || o instanceof Double) jab.add((Double) o); else if (o instanceof BigDecimal) jab.add((BigDecimal) o); else if (o instanceof Boolean) jab.add((Boolean) o); else jab.add(o.toString()); } else if (elemInsp.getCategory() == Category.LIST) { jab.add(getJsonArrayFromFieldData(obj, elemInsp, jsonFactory)); } else { jab.add(getJsonObjectFromFieldData(obj, elemInsp, jsonFactory)); } } return jab; }
Example 15
Source File: HiveORCVectorizedReader.java From dremio-oss with Apache License 2.0 | 5 votes |
private boolean isSupportedType(Category category) { return (category == Category.PRIMITIVE || category == Category.LIST || category == Category.STRUCT || category == Category.MAP || category == Category.UNION); }
Example 16
Source File: HiveORCVectorizedReader.java From dremio-oss with Apache License 2.0 | 5 votes |
private boolean isSupportedType(Category category) { return (category == Category.PRIMITIVE || category == Category.LIST || category == Category.STRUCT || category == Category.MAP || category == Category.UNION); }
Example 17
Source File: HiveUtils.java From incubator-hivemall with Apache License 2.0 | 4 votes |
public static boolean isListTypeInfo(@Nonnull TypeInfo typeInfo) { return typeInfo.getCategory() == Category.LIST; }
Example 18
Source File: MapKeyValuesSchemaConverter.java From presto with Apache License 2.0 | 4 votes |
private static Type convertType(String name, TypeInfo typeInfo, Repetition repetition) { if (typeInfo.getCategory() == Category.PRIMITIVE) { if (typeInfo.equals(TypeInfoFactory.stringTypeInfo)) { return Types.primitive(PrimitiveTypeName.BINARY, repetition).as(OriginalType.UTF8) .named(name); } else if (typeInfo.equals(TypeInfoFactory.intTypeInfo) || typeInfo.equals(TypeInfoFactory.shortTypeInfo) || typeInfo.equals(TypeInfoFactory.byteTypeInfo)) { return Types.primitive(PrimitiveTypeName.INT32, repetition).named(name); } else if (typeInfo.equals(TypeInfoFactory.longTypeInfo)) { return Types.primitive(PrimitiveTypeName.INT64, repetition).named(name); } else if (typeInfo.equals(TypeInfoFactory.doubleTypeInfo)) { return Types.primitive(PrimitiveTypeName.DOUBLE, repetition).named(name); } else if (typeInfo.equals(TypeInfoFactory.floatTypeInfo)) { return Types.primitive(PrimitiveTypeName.FLOAT, repetition).named(name); } else if (typeInfo.equals(TypeInfoFactory.booleanTypeInfo)) { return Types.primitive(PrimitiveTypeName.BOOLEAN, repetition).named(name); } else if (typeInfo.equals(TypeInfoFactory.binaryTypeInfo)) { return Types.primitive(PrimitiveTypeName.BINARY, repetition).named(name); } else if (typeInfo.equals(TypeInfoFactory.timestampTypeInfo)) { return Types.primitive(PrimitiveTypeName.INT96, repetition).named(name); } else if (typeInfo.equals(TypeInfoFactory.voidTypeInfo)) { throw new UnsupportedOperationException("Void type not implemented"); } else if (typeInfo.getTypeName().toLowerCase(Locale.ENGLISH).startsWith( serdeConstants.CHAR_TYPE_NAME)) { return Types.optional(PrimitiveTypeName.BINARY).as(OriginalType.UTF8).named(name); } else if (typeInfo.getTypeName().toLowerCase(Locale.ENGLISH).startsWith( serdeConstants.VARCHAR_TYPE_NAME)) { return Types.optional(PrimitiveTypeName.BINARY).as(OriginalType.UTF8).named(name); } else if (typeInfo instanceof DecimalTypeInfo) { DecimalTypeInfo decimalTypeInfo = (DecimalTypeInfo) typeInfo; int prec = decimalTypeInfo.precision(); int scale = decimalTypeInfo.scale(); int bytes = ParquetHiveSerDe.PRECISION_TO_BYTE_COUNT[prec - 1]; return Types.optional(PrimitiveTypeName.FIXED_LEN_BYTE_ARRAY).length(bytes).as(OriginalType.DECIMAL).scale(scale).precision(prec).named(name); } else if (typeInfo.equals(TypeInfoFactory.dateTypeInfo)) { return Types.primitive(PrimitiveTypeName.INT32, repetition).as(OriginalType.DATE).named(name); } else if (typeInfo.equals(TypeInfoFactory.unknownTypeInfo)) { throw new UnsupportedOperationException("Unknown type not implemented"); } else { throw new IllegalArgumentException("Unknown type: " + typeInfo); } } else if (typeInfo.getCategory() == Category.LIST) { return convertArrayType(name, (ListTypeInfo) typeInfo); } else if (typeInfo.getCategory() == Category.STRUCT) { return convertStructType(name, (StructTypeInfo) typeInfo); } else if (typeInfo.getCategory() == Category.MAP) { return convertMapType(name, (MapTypeInfo) typeInfo); } else if (typeInfo.getCategory() == Category.UNION) { throw new UnsupportedOperationException("Union type not implemented"); } else { throw new IllegalArgumentException("Unknown type: " + typeInfo); } }
Example 19
Source File: SingleLevelArraySchemaConverter.java From presto with Apache License 2.0 | 4 votes |
private static Type convertType(String name, TypeInfo typeInfo, Repetition repetition) { if (typeInfo.getCategory() == Category.PRIMITIVE) { if (typeInfo.equals(TypeInfoFactory.stringTypeInfo)) { return Types.primitive(PrimitiveTypeName.BINARY, repetition).as(OriginalType.UTF8) .named(name); } else if (typeInfo.equals(TypeInfoFactory.intTypeInfo) || typeInfo.equals(TypeInfoFactory.shortTypeInfo) || typeInfo.equals(TypeInfoFactory.byteTypeInfo)) { return Types.primitive(PrimitiveTypeName.INT32, repetition).named(name); } else if (typeInfo.equals(TypeInfoFactory.longTypeInfo)) { return Types.primitive(PrimitiveTypeName.INT64, repetition).named(name); } else if (typeInfo.equals(TypeInfoFactory.doubleTypeInfo)) { return Types.primitive(PrimitiveTypeName.DOUBLE, repetition).named(name); } else if (typeInfo.equals(TypeInfoFactory.floatTypeInfo)) { return Types.primitive(PrimitiveTypeName.FLOAT, repetition).named(name); } else if (typeInfo.equals(TypeInfoFactory.booleanTypeInfo)) { return Types.primitive(PrimitiveTypeName.BOOLEAN, repetition).named(name); } else if (typeInfo.equals(TypeInfoFactory.binaryTypeInfo)) { return Types.primitive(PrimitiveTypeName.BINARY, repetition).named(name); } else if (typeInfo.equals(TypeInfoFactory.timestampTypeInfo)) { return Types.primitive(PrimitiveTypeName.INT96, repetition).named(name); } else if (typeInfo.equals(TypeInfoFactory.voidTypeInfo)) { throw new UnsupportedOperationException("Void type not implemented"); } else if (typeInfo.getTypeName().toLowerCase(Locale.ENGLISH).startsWith( serdeConstants.CHAR_TYPE_NAME)) { if (repetition == Repetition.OPTIONAL) { return Types.optional(PrimitiveTypeName.BINARY).as(OriginalType.UTF8).named(name); } else { return Types.repeated(PrimitiveTypeName.BINARY).as(OriginalType.UTF8).named(name); } } else if (typeInfo.getTypeName().toLowerCase(Locale.ENGLISH).startsWith( serdeConstants.VARCHAR_TYPE_NAME)) { if (repetition == Repetition.OPTIONAL) { return Types.optional(PrimitiveTypeName.BINARY).as(OriginalType.UTF8).named(name); } else { return Types.repeated(PrimitiveTypeName.BINARY).as(OriginalType.UTF8).named(name); } } else if (typeInfo instanceof DecimalTypeInfo) { DecimalTypeInfo decimalTypeInfo = (DecimalTypeInfo) typeInfo; int prec = decimalTypeInfo.precision(); int scale = decimalTypeInfo.scale(); int bytes = ParquetHiveSerDe.PRECISION_TO_BYTE_COUNT[prec - 1]; if (repetition == Repetition.OPTIONAL) { return Types.optional(PrimitiveTypeName.FIXED_LEN_BYTE_ARRAY).length(bytes).as(OriginalType.DECIMAL).scale(scale).precision(prec).named(name); } else { return Types.repeated(PrimitiveTypeName.FIXED_LEN_BYTE_ARRAY).length(bytes).as(OriginalType.DECIMAL).scale(scale).precision(prec).named(name); } } else if (typeInfo.equals(TypeInfoFactory.dateTypeInfo)) { return Types.primitive(PrimitiveTypeName.INT32, repetition).as(OriginalType.DATE).named(name); } else if (typeInfo.equals(TypeInfoFactory.unknownTypeInfo)) { throw new UnsupportedOperationException("Unknown type not implemented"); } else { throw new IllegalArgumentException("Unknown type: " + typeInfo); } } else if (typeInfo.getCategory() == Category.LIST) { return convertArrayType(name, (ListTypeInfo) typeInfo, repetition); } else if (typeInfo.getCategory() == Category.STRUCT) { return convertStructType(name, (StructTypeInfo) typeInfo, repetition); } else if (typeInfo.getCategory() == Category.MAP) { return convertMapType(name, (MapTypeInfo) typeInfo, repetition); } else if (typeInfo.getCategory() == Category.UNION) { throw new UnsupportedOperationException("Union type not implemented"); } else { throw new IllegalArgumentException("Unknown type: " + typeInfo); } }
Example 20
Source File: SingleLevelArrayMapKeyValuesSchemaConverter.java From presto with Apache License 2.0 | 4 votes |
private static Type convertType(String name, TypeInfo typeInfo, Repetition repetition) { if (typeInfo.getCategory() == Category.PRIMITIVE) { if (typeInfo.equals(TypeInfoFactory.stringTypeInfo)) { return Types.primitive(PrimitiveTypeName.BINARY, repetition).as(OriginalType.UTF8) .named(name); } if (typeInfo.equals(TypeInfoFactory.intTypeInfo) || typeInfo.equals(TypeInfoFactory.shortTypeInfo) || typeInfo.equals(TypeInfoFactory.byteTypeInfo)) { return Types.primitive(PrimitiveTypeName.INT32, repetition).named(name); } if (typeInfo.equals(TypeInfoFactory.longTypeInfo)) { return Types.primitive(PrimitiveTypeName.INT64, repetition).named(name); } if (typeInfo.equals(TypeInfoFactory.doubleTypeInfo)) { return Types.primitive(PrimitiveTypeName.DOUBLE, repetition).named(name); } if (typeInfo.equals(TypeInfoFactory.floatTypeInfo)) { return Types.primitive(PrimitiveTypeName.FLOAT, repetition).named(name); } if (typeInfo.equals(TypeInfoFactory.booleanTypeInfo)) { return Types.primitive(PrimitiveTypeName.BOOLEAN, repetition).named(name); } if (typeInfo.equals(TypeInfoFactory.binaryTypeInfo)) { return Types.primitive(PrimitiveTypeName.BINARY, repetition).named(name); } if (typeInfo.equals(TypeInfoFactory.timestampTypeInfo)) { return Types.primitive(PrimitiveTypeName.INT96, repetition).named(name); } if (typeInfo.equals(TypeInfoFactory.voidTypeInfo)) { throw new UnsupportedOperationException("Void type not implemented"); } if (typeInfo.getTypeName().toLowerCase(Locale.ENGLISH).startsWith( serdeConstants.CHAR_TYPE_NAME)) { if (repetition == Repetition.OPTIONAL) { return Types.optional(PrimitiveTypeName.BINARY).as(OriginalType.UTF8).named(name); } return Types.repeated(PrimitiveTypeName.BINARY).as(OriginalType.UTF8).named(name); } if (typeInfo.getTypeName().toLowerCase(Locale.ENGLISH).startsWith( serdeConstants.VARCHAR_TYPE_NAME)) { if (repetition == Repetition.OPTIONAL) { return Types.optional(PrimitiveTypeName.BINARY).as(OriginalType.UTF8).named(name); } return Types.repeated(PrimitiveTypeName.BINARY).as(OriginalType.UTF8).named(name); } if (typeInfo instanceof DecimalTypeInfo) { DecimalTypeInfo decimalTypeInfo = (DecimalTypeInfo) typeInfo; int prec = decimalTypeInfo.precision(); int scale = decimalTypeInfo.scale(); int bytes = ParquetHiveSerDe.PRECISION_TO_BYTE_COUNT[prec - 1]; if (repetition == Repetition.OPTIONAL) { return Types.optional(PrimitiveTypeName.FIXED_LEN_BYTE_ARRAY).length(bytes).as(OriginalType.DECIMAL).scale(scale).precision(prec).named(name); } return Types.repeated(PrimitiveTypeName.FIXED_LEN_BYTE_ARRAY).length(bytes).as(OriginalType.DECIMAL).scale(scale).precision(prec).named(name); } if (typeInfo.equals(TypeInfoFactory.dateTypeInfo)) { return Types.primitive(PrimitiveTypeName.INT32, repetition).as(OriginalType.DATE).named(name); } if (typeInfo.equals(TypeInfoFactory.unknownTypeInfo)) { throw new UnsupportedOperationException("Unknown type not implemented"); } throw new IllegalArgumentException("Unknown type: " + typeInfo); } if (typeInfo.getCategory() == Category.LIST) { return convertArrayType(name, (ListTypeInfo) typeInfo, repetition); } if (typeInfo.getCategory() == Category.STRUCT) { return convertStructType(name, (StructTypeInfo) typeInfo, repetition); } if (typeInfo.getCategory() == Category.MAP) { return convertMapType(name, (MapTypeInfo) typeInfo, repetition); } if (typeInfo.getCategory() == Category.UNION) { throw new UnsupportedOperationException("Union type not implemented"); } throw new IllegalArgumentException("Unknown type: " + typeInfo); }