Skip to content

Hive 3 classes present in hive-iceberg-runtime.jar breaks running on Hive 2 #1630

@massdosage

Description

@massdosage

If you try deploy the version of iceberg-hive-runtime in master on Hive 2 one gets exceptions like this:

2020-10-19T11:19:25,011 ERROR [8aadf788-a388-4641-88f6-4e7a07e8929e main([])]: exec.DDLTask (DDLTask.java:failed(639)) - java.lang.NoClassDefFoundError: org/apache/hadoop/hive/serde2/io/DateWritableV2
        at java.lang.Class.getDeclaredMethods0(Native Method)
        at java.lang.Class.privateGetDeclaredMethods(Class.java:2729)
        at java.lang.Class.privateGetMethodRecursive(Class.java:3076)
        at java.lang.Class.getMethod0(Class.java:3046)
        at java.lang.Class.getMethod(Class.java:1812)
        at org.apache.iceberg.common.DynMethods$Builder.impl(DynMethods.java:305)
        at org.apache.iceberg.common.DynMethods$Builder.impl(DynMethods.java:264)
        at org.apache.iceberg.common.DynMethods$Builder.impl(DynMethods.java:283)
        at org.apache.iceberg.mr.hive.serde.objectinspector.IcebergObjectInspector.<clinit>(IcebergObjectInspector.java:40)
        at org.apache.iceberg.mr.hive.HiveIcebergSerDe.initialize(HiveIcebergSerDe.java:67)

This is because the Hive3 object inspector classes are present in the runtime jar:

jar -tf 9d98b1d.dirty/iceberg-hive-runtime-9d98b1d.dirty.jar  | grep Hive3
org/apache/iceberg/mr/hive/serde/objectinspector/IcebergDateObjectInspectorHive3.class
org/apache/iceberg/mr/hive/serde/objectinspector/IcebergTimestampObjectInspectorHive3$1.class
org/apache/iceberg/mr/hive/serde/objectinspector/IcebergTimestampObjectInspectorHive3$2.class
org/apache/iceberg/mr/hive/serde/objectinspector/IcebergTimestampObjectInspectorHive3.class

which means it attempts to load these object inspectors which in turn fails as the required Hive 3 classes aren't on the classpath.

I'm pretty sure this issue started happening after the changes introduced in #1478.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions