[
https://issues.apache.org/jira/browse/HIVE-28229?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Dominik Diedrich updated HIVE-28229:
------------------------------------
Description:
I've been using _apache.hive_ with _apache.iceberg_ in order to communicate
with a Hive MetaStore. Since the 4.0.0-beta-1 changes, underscores for all
environment variables have been introduced. Instead of using the
_iceberg-hive-metastore_ dependency with including HiveCatalog,
HiveTableOperations I had to switch to _hive-iceberg-catalog_ from
_apache.hive_ dependency because of the now missing underscores in the
_apache.iceberg_ HiveCatalog class version.
Normally, this shouldn't be a problem but I figured that the
HiveTableOperations class of _apache.hive_ is using the relocated _fasterxml_
dependency and then calls the JsonUtil class when using _setSnapshotSummary,_
where _fasterxml_ is being imported by the non-relocated _fasterxml_ dependency
path.
Now the Hive Metastore Client breaks because I get the error message that the
ObjectMapper method can't be found:
{code:java}
DEBUG [log]
io.grpc.netty.shaded.io.netty.util.internal.logging.AbstractInternalLogger
(AbstractInternalLogger.java:214) : [id: 0xc34d5ce5, L:/127.0.0.1:1238 -
R:/127.0.0.1:37678] OUTBOUND HEADERS: streamId=3
headers=GrpcHttp2OutboundHeaders[:status: 200, content-type: application/grpc,
grpc-status: 2, grpc-message: Application error processing RPC] padding=0
endStream=true java.lang.NoSuchMethodError:
'org.apache.hive.iceberg.com.fasterxml.jackson.databind.ObjectMapper
org.apache.iceberg.util.JsonUtil.mapper()' at
org.apache.iceberg.hive.HiveTableOperations.setSnapshotSummary(HiveTableOperations.java:435)
at
org.apache.iceberg.hive.HiveTableOperations.setSnapshotStats(HiveTableOperations.java:426)
at
org.apache.iceberg.hive.HiveTableOperations.setHmsTableParameters(HiveTableOperations.java:408)
at
org.apache.iceberg.hive.HiveTableOperations.doCommit(HiveTableOperations.java:222)
at
org.apache.iceberg.BaseMetastoreTableOperations.commit(BaseMetastoreTableOperations.java:135)
at
org.apache.iceberg.BaseTransaction.lambda$commitSimpleTransaction$3(BaseTransaction.java:417)
at org.apache.iceberg.util.Tasks$Builder.runTaskWithRetry(Tasks.java:413) at
org.apache.iceberg.util.Tasks$Builder.runSingleThreaded(Tasks.java:219) at
org.apache.iceberg.util.Tasks$Builder.run(Tasks.java:203) at
org.apache.iceberg.util.Tasks$Builder.run(Tasks.java:196) at
org.apache.iceberg.BaseTransaction.commitSimpleTransaction(BaseTransaction.java:413)
at
org.apache.iceberg.BaseTransaction.commitTransaction(BaseTransaction.java:308)
at
....
{code}
The only workound I could find is to manually add the Shadings of package
_hive-iceberg-shading_ from apache.hive to my own pom. But now I need to always
build an uber jar.
Did I find a bug here or is this expected behavior? If so, how can this be
fixed?
was:
I've been using _apache.hive_ with _apache.iceberg_ in order to communicate
with a Hive MetaStore. Since the 4.0.0-beta-1 changes, underscores for all
environment variables have been introduced. Instead of using the
_iceberg-hive-metastore_ dependency with including HiveCatalog,
HiveTableOperations I had to switch to _hive-iceberg-catalog_ from
_apache.hive_ dependency because of the now missing underscores in the
_apache.iceberg_ HiveCatalog class version.
Normally, this shouldn't be a problem but I figured that the
HiveTableOperations class of _apache.hive_ is using the relocated _fasterxml_
dependency and then calls the JsonUtil class when using _setSnapshotSummary,_
where _fasterxml_ is being imported by the non-relocated _fasterxml_ dependency
path.
Now the Hive Metastore Client breaks because I get the error message that the
ObjectMapper method can't be found:
{code:java}
DEBUG [log]
io.grpc.netty.shaded.io.netty.util.internal.logging.AbstractInternalLogger
(AbstractInternalLogger.java:214) : [id: 0xc34d5ce5, L:/127.0.0.1:1238 -
R:/127.0.0.1:37678] OUTBOUND HEADERS: streamId=3
headers=GrpcHttp2OutboundHeaders[:status: 200, content-type: application/grpc,
grpc-status: 2, grpc-message: Application error processing RPC] padding=0
endStream=true java.lang.NoSuchMethodError:
'org.apache.hive.iceberg.com.fasterxml.jackson.databind.ObjectMapper
org.apache.iceberg.util.JsonUtil.mapper()' at
org.apache.iceberg.hive.HiveTableOperations.setSnapshotSummary(HiveTableOperations.java:435)
at
org.apache.iceberg.hive.HiveTableOperations.setSnapshotStats(HiveTableOperations.java:426)
at
org.apache.iceberg.hive.HiveTableOperations.setHmsTableParameters(HiveTableOperations.java:408)
at
org.apache.iceberg.hive.HiveTableOperations.doCommit(HiveTableOperations.java:222)
at
org.apache.iceberg.BaseMetastoreTableOperations.commit(BaseMetastoreTableOperations.java:135)
at
org.apache.iceberg.BaseTransaction.lambda$commitSimpleTransaction$3(BaseTransaction.java:417)
at org.apache.iceberg.util.Tasks$Builder.runTaskWithRetry(Tasks.java:413) at
org.apache.iceberg.util.Tasks$Builder.runSingleThreaded(Tasks.java:219) at
org.apache.iceberg.util.Tasks$Builder.run(Tasks.java:203) at
org.apache.iceberg.util.Tasks$Builder.run(Tasks.java:196) at
org.apache.iceberg.BaseTransaction.commitSimpleTransaction(BaseTransaction.java:413)
at
org.apache.iceberg.BaseTransaction.commitTransaction(BaseTransaction.java:308)
at iceberg_cli.IcebergConnector.tableTransaction(IcebergConnector.java:1336) at
iceberg_cli.grpc.icebergmanager.IcebergManagerServer$IcebergManagerService.dataModifier(IcebergManagerServer.java:333)
at
iceberg_cli.grpc.icebergmanager.IcebergManagerGrpc$MethodHandlers.invoke(IcebergManagerGrpc.java:544)
at
io.grpc.stub.ServerCalls$UnaryServerCallHandler$UnaryServerCallListener.onHalfClose(ServerCalls.java:182)
at
io.grpc.internal.ServerCallImpl$ServerStreamListenerImpl.halfClosed(ServerCallImpl.java:351)
at
io.grpc.internal.ServerImpl$JumpToApplicationThreadServerStreamListener$1HalfClosed.runInContext(ServerImpl.java:861)
at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37) at
io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:133) at
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)
{code}
The only workound I could find is to manually add the Shadings of package
_hive-iceberg-shading_ from apache.hive to my own pom. But now I need to always
build an uber jar.
Did I find a bug here or is this expected behavior? If so, how can this be
fixed?
> Fasterxml Shading Problem (hive-iceberg-shading)
> ------------------------------------------------
>
> Key: HIVE-28229
> URL: https://issues.apache.org/jira/browse/HIVE-28229
> Project: Hive
> Issue Type: Bug
> Components: HCatalog, Hive
> Affects Versions: 4.0.0, 4.0.0-beta-1
> Environment: openjdk 18.0.2-ea 2022-07-19
> OpenJDK Runtime Environment (build 18.0.2-ea+9-Ubuntu-222.04)
> OpenJDK 64-Bit Server VM (build 18.0.2-ea+9-Ubuntu-222.04, mixed mode,
> sharing)
>
>
> Reporter: Dominik Diedrich
> Priority: Minor
>
> I've been using _apache.hive_ with _apache.iceberg_ in order to communicate
> with a Hive MetaStore. Since the 4.0.0-beta-1 changes, underscores for all
> environment variables have been introduced. Instead of using the
> _iceberg-hive-metastore_ dependency with including HiveCatalog,
> HiveTableOperations I had to switch to _hive-iceberg-catalog_ from
> _apache.hive_ dependency because of the now missing underscores in the
> _apache.iceberg_ HiveCatalog class version.
> Normally, this shouldn't be a problem but I figured that the
> HiveTableOperations class of _apache.hive_ is using the relocated _fasterxml_
> dependency and then calls the JsonUtil class when using _setSnapshotSummary,_
> where _fasterxml_ is being imported by the non-relocated _fasterxml_
> dependency path.
> Now the Hive Metastore Client breaks because I get the error message that the
> ObjectMapper method can't be found:
> {code:java}
> DEBUG [log]
> io.grpc.netty.shaded.io.netty.util.internal.logging.AbstractInternalLogger
> (AbstractInternalLogger.java:214) : [id: 0xc34d5ce5, L:/127.0.0.1:1238 -
> R:/127.0.0.1:37678] OUTBOUND HEADERS: streamId=3
> headers=GrpcHttp2OutboundHeaders[:status: 200, content-type:
> application/grpc, grpc-status: 2, grpc-message: Application error processing
> RPC] padding=0 endStream=true java.lang.NoSuchMethodError:
> 'org.apache.hive.iceberg.com.fasterxml.jackson.databind.ObjectMapper
> org.apache.iceberg.util.JsonUtil.mapper()' at
> org.apache.iceberg.hive.HiveTableOperations.setSnapshotSummary(HiveTableOperations.java:435)
> at
> org.apache.iceberg.hive.HiveTableOperations.setSnapshotStats(HiveTableOperations.java:426)
> at
> org.apache.iceberg.hive.HiveTableOperations.setHmsTableParameters(HiveTableOperations.java:408)
> at
> org.apache.iceberg.hive.HiveTableOperations.doCommit(HiveTableOperations.java:222)
> at
> org.apache.iceberg.BaseMetastoreTableOperations.commit(BaseMetastoreTableOperations.java:135)
> at
> org.apache.iceberg.BaseTransaction.lambda$commitSimpleTransaction$3(BaseTransaction.java:417)
> at org.apache.iceberg.util.Tasks$Builder.runTaskWithRetry(Tasks.java:413) at
> org.apache.iceberg.util.Tasks$Builder.runSingleThreaded(Tasks.java:219) at
> org.apache.iceberg.util.Tasks$Builder.run(Tasks.java:203) at
> org.apache.iceberg.util.Tasks$Builder.run(Tasks.java:196) at
> org.apache.iceberg.BaseTransaction.commitSimpleTransaction(BaseTransaction.java:413)
> at
> org.apache.iceberg.BaseTransaction.commitTransaction(BaseTransaction.java:308)
> at
> ....
> {code}
> The only workound I could find is to manually add the Shadings of package
> _hive-iceberg-shading_ from apache.hive to my own pom. But now I need to
> always build an uber jar.
> Did I find a bug here or is this expected behavior? If so, how can this be
> fixed?
--
This message was sent by Atlassian Jira
(v8.20.10#820010)