sunchao commented on a change in pull request #29843:
URL: https://github.com/apache/spark/pull/29843#discussion_r509716889
##########
File path:
sql/hive/src/main/scala/org/apache/spark/sql/hive/client/IsolatedClientLoader.scala
##########
@@ -118,19 +118,32 @@ private[hive] object IsolatedClientLoader extends Logging
{
hadoopVersion: String,
ivyPath: Option[String],
remoteRepos: String): Seq[URL] = {
+ val hadoopJarNames = if (hadoopVersion.startsWith("3")) {
+ Seq(s"org.apache.hadoop:hadoop-client-api:$hadoopVersion",
+ s"org.apache.hadoop:hadoop-client-runtime:$hadoopVersion")
+ } else {
+ Seq(s"org.apache.hadoop:hadoop-client:$hadoopVersion")
+ }
val hiveArtifacts = version.extraDeps ++
Seq("hive-metastore", "hive-exec", "hive-common", "hive-serde")
.map(a => s"org.apache.hive:$a:${version.fullVersion}") ++
- Seq("com.google.guava:guava:14.0.1",
- s"org.apache.hadoop:hadoop-client:$hadoopVersion")
+ Seq("com.google.guava:guava:14.0.1") ++ hadoopJarNames
+
+ val extraExclusions = if (hadoopVersion.startsWith("3")) {
+ // this introduced from lower version of Hive could conflict with jars
in Hadoop 3.2+, so
+ // exclude here in favor of the ones in Hadoop 3.2+
+ Seq("org.apache.hadoop:hadoop-auth")
Review comment:
No not same artifacts with different versions, but different artifacts
with different versions (e.g., `hadoop-common` 2.7 but `hadoop-auth` 3.2).
Yes we could do a cleanup and remove all other dependencies here, although
somewhat related I'm wondering whether we do need to support not-sharing
classes at all. It is currently used only in tests and in a rare case where it
can't find [the specified hadoop
version](https://github.com/apache/spark/blob/master/sql/hive/src/main/scala/org/apache/spark/sql/hive/client/IsolatedClientLoader.scala#L78)
(I don't fully understand why it switch to not using shared classes in the
latter).
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]