com.facebook.hive.orc.lazy.OrcLazyObjectInspectorUtils Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of hive-dwrf Show documentation
Show all versions of hive-dwrf Show documentation
DWRF file format for Hive
// Copyright (c) 2013, Facebook, Inc. All rights reserved.
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.facebook.hive.orc.lazy;
import java.util.List;
import com.facebook.hive.orc.OrcProto;
import com.facebook.hive.orc.OrcStruct;
import com.facebook.hive.orc.OrcUnion;
import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
import org.apache.hadoop.hive.serde2.typeinfo.ListTypeInfo;
import org.apache.hadoop.hive.serde2.typeinfo.MapTypeInfo;
import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo;
import org.apache.hadoop.hive.serde2.typeinfo.StructTypeInfo;
import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
import org.apache.hadoop.hive.serde2.typeinfo.UnionTypeInfo;
public final class OrcLazyObjectInspectorUtils {
private static final OrcLazyFloatObjectInspector FLOAT_OBJECT_INSPECTOR = new OrcLazyFloatObjectInspector();
private static final OrcLazyDoubleObjectInspector DOUBLE_OBJECT_INSPECTOR = new OrcLazyDoubleObjectInspector();
private static final OrcLazyBooleanObjectInspector BOOLEAN_OBJECT_INSPECTOR = new OrcLazyBooleanObjectInspector();
private static final OrcLazyByteObjectInspector BYTE_OBJECT_INSPECTOR = new OrcLazyByteObjectInspector();
private static final OrcLazyShortObjectInspector SHORT_OBJECT_INSPECTOR = new OrcLazyShortObjectInspector();
private static final OrcLazyIntObjectInspector INT_OBJECT_INSPECTOR = new OrcLazyIntObjectInspector();
private static final OrcLazyLongObjectInspector LONG_OBJECT_INSPECTOR = new OrcLazyLongObjectInspector();
private static final OrcLazyBinaryObjectInspector BINARY_OBJECT_INSPECTOR = new OrcLazyBinaryObjectInspector();
private static final OrcLazyStringObjectInspector STRING_OBJECT_INSPECTOR = new OrcLazyStringObjectInspector();
private static final OrcLazyTimestampObjectInspector TIMESTAMP_OBJECT_INSPECTOR = new OrcLazyTimestampObjectInspector();
public static ObjectInspector createLazyObjectInspector(TypeInfo info) {
switch (info.getCategory()) {
case PRIMITIVE:
switch (((PrimitiveTypeInfo) info).getPrimitiveCategory()) {
case FLOAT:
return FLOAT_OBJECT_INSPECTOR;
case DOUBLE:
return DOUBLE_OBJECT_INSPECTOR;
case BOOLEAN:
return BOOLEAN_OBJECT_INSPECTOR;
case BYTE:
return BYTE_OBJECT_INSPECTOR;
case SHORT:
return SHORT_OBJECT_INSPECTOR;
case INT:
return INT_OBJECT_INSPECTOR;
case LONG:
return LONG_OBJECT_INSPECTOR;
case BINARY:
return BINARY_OBJECT_INSPECTOR;
case STRING:
return STRING_OBJECT_INSPECTOR;
case TIMESTAMP:
return TIMESTAMP_OBJECT_INSPECTOR;
default:
throw new IllegalArgumentException("Unknown primitive type " +
((PrimitiveTypeInfo) info).getPrimitiveCategory());
}
case STRUCT:
return new OrcLazyStructObjectInspector((StructTypeInfo) info);
case UNION:
return new OrcLazyUnionObjectInspector((UnionTypeInfo) info);
case MAP:
return new OrcLazyMapObjectInspector((MapTypeInfo) info);
case LIST:
return new OrcLazyListObjectInspector((ListTypeInfo) info);
default:
throw new IllegalArgumentException("Unknown type " +
info.getCategory());
}
}
public static ObjectInspector createLazyObjectInspector(int columnId,
List types){
OrcProto.Type type = types.get(columnId);
switch (type.getKind()) {
case FLOAT:
return FLOAT_OBJECT_INSPECTOR;
case DOUBLE:
return DOUBLE_OBJECT_INSPECTOR;
case BOOLEAN:
return BOOLEAN_OBJECT_INSPECTOR;
case BYTE:
return BYTE_OBJECT_INSPECTOR;
case SHORT:
return SHORT_OBJECT_INSPECTOR;
case INT:
return INT_OBJECT_INSPECTOR;
case LONG:
return LONG_OBJECT_INSPECTOR;
case BINARY:
return BINARY_OBJECT_INSPECTOR;
case STRING:
return STRING_OBJECT_INSPECTOR;
case TIMESTAMP:
return TIMESTAMP_OBJECT_INSPECTOR;
case STRUCT:
return new OrcLazyStructObjectInspector(columnId, types);
case UNION:
return new OrcLazyUnionObjectInspector(columnId, types);
case MAP:
return new OrcLazyMapObjectInspector(columnId, types);
case LIST:
return new OrcLazyListObjectInspector(columnId, types);
default:
throw new UnsupportedOperationException("Unknown type " +
type.getKind());
}
}
public static ObjectInspector createWritableObjectInspector(TypeInfo info) {
switch (info.getCategory()) {
case PRIMITIVE:
switch (((PrimitiveTypeInfo) info).getPrimitiveCategory()) {
case FLOAT:
return PrimitiveObjectInspectorFactory.writableFloatObjectInspector;
case DOUBLE:
return PrimitiveObjectInspectorFactory.writableDoubleObjectInspector;
case BOOLEAN:
return PrimitiveObjectInspectorFactory.writableBooleanObjectInspector;
case BYTE:
return PrimitiveObjectInspectorFactory.writableByteObjectInspector;
case SHORT:
return PrimitiveObjectInspectorFactory.writableShortObjectInspector;
case INT:
return PrimitiveObjectInspectorFactory.writableIntObjectInspector;
case LONG:
return PrimitiveObjectInspectorFactory.writableLongObjectInspector;
case BINARY:
return PrimitiveObjectInspectorFactory.writableBinaryObjectInspector;
case STRING:
return PrimitiveObjectInspectorFactory.writableStringObjectInspector;
case TIMESTAMP:
return PrimitiveObjectInspectorFactory.javaTimestampObjectInspector;
default:
throw new IllegalArgumentException("Unknown primitive type " +
((PrimitiveTypeInfo) info).getPrimitiveCategory());
}
case STRUCT:
return new OrcStruct.OrcStructInspector((StructTypeInfo) info);
case UNION:
return new OrcUnion.OrcUnionObjectInspector((UnionTypeInfo) info);
case MAP:
return new OrcStruct.OrcMapObjectInspector((MapTypeInfo) info);
case LIST:
return new OrcStruct.OrcListObjectInspector((ListTypeInfo) info);
default:
throw new IllegalArgumentException("Unknown type " +
info.getCategory());
}
}
public static ObjectInspector createWritableObjectInspector(int columnId,
List types){
OrcProto.Type type = types.get(columnId);
switch (type.getKind()) {
case FLOAT:
return PrimitiveObjectInspectorFactory.writableFloatObjectInspector;
case DOUBLE:
return PrimitiveObjectInspectorFactory.writableDoubleObjectInspector;
case BOOLEAN:
return PrimitiveObjectInspectorFactory.writableBooleanObjectInspector;
case BYTE:
return PrimitiveObjectInspectorFactory.writableByteObjectInspector;
case SHORT:
return PrimitiveObjectInspectorFactory.writableShortObjectInspector;
case INT:
return PrimitiveObjectInspectorFactory.writableIntObjectInspector;
case LONG:
return PrimitiveObjectInspectorFactory.writableLongObjectInspector;
case BINARY:
return PrimitiveObjectInspectorFactory.writableBinaryObjectInspector;
case STRING:
return PrimitiveObjectInspectorFactory.writableStringObjectInspector;
case TIMESTAMP:
return PrimitiveObjectInspectorFactory.javaTimestampObjectInspector;
case STRUCT:
return new OrcStruct.OrcStructInspector(columnId, types);
case UNION:
return new OrcUnion.OrcUnionObjectInspector(columnId, types);
case MAP:
return new OrcStruct.OrcMapObjectInspector(columnId, types);
case LIST:
return new OrcStruct.OrcListObjectInspector(columnId, types);
default:
throw new UnsupportedOperationException("Unknown type " +
type.getKind());
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy