diff --git a/sql/hive/src/main/scala/org/apache/spark/sql/hive/client/HiveClientImpl.scala b/sql/hive/src/main/scala/org/apache/spark/sql/hive/client/HiveClientImpl.scala index f1fe95b8a318..be46e54d18ec 100644 --- a/sql/hive/src/main/scala/org/apache/spark/sql/hive/client/HiveClientImpl.scala +++ b/sql/hive/src/main/scala/org/apache/spark/sql/hive/client/HiveClientImpl.scala @@ -875,7 +875,7 @@ private[hive] class HiveClientImpl( // Since HIVE-18238(Hive 3.0.0), the Driver.close function's return type changed // and the CommandProcessorFactory.clean function removed. driver.getClass.getMethod("close").invoke(driver) - if (version != hive.v3_0 && version != hive.v3_1 && version != hive.v4_0) { + if (version < hive.v3_0) { CommandProcessorFactory.clean(conf) } } diff --git a/sql/hive/src/main/scala/org/apache/spark/sql/hive/client/package.scala b/sql/hive/src/main/scala/org/apache/spark/sql/hive/client/package.scala index d7a0c58b4016..52b255fd2ecc 100644 --- a/sql/hive/src/main/scala/org/apache/spark/sql/hive/client/package.scala +++ b/sql/hive/src/main/scala/org/apache/spark/sql/hive/client/package.scala @@ -17,6 +17,8 @@ package org.apache.spark.sql.hive +import org.apache.spark.util.Utils + /** Support for interacting with different versions of the HiveMetastoreClient */ package object client { private[hive] sealed abstract class HiveVersion( @@ -115,8 +117,14 @@ package object client { exclusions = "org.apache.curator:*" :: "org.apache.hive:hive-service-rpc" :: - "org.apache.tez:tez-api" :: - "org.apache.zookeeper:zookeeper" :: Nil) + "org.apache.zookeeper:zookeeper" :: Nil ++ + { + if (!Utils.isTesting) { + Seq("org.apache.tez:tez-api") + } else { + Seq.empty + } + }) val allSupportedHiveVersions: Set[HiveVersion] = Set(v2_0, v2_1, v2_2, v2_3, v3_0, v3_1, v4_0, v4_1) diff --git a/sql/hive/src/test/scala/org/apache/spark/sql/hive/client/HiveClientSuite.scala b/sql/hive/src/test/scala/org/apache/spark/sql/hive/client/HiveClientSuite.scala index 585b8a92c8be..06942eae2229 100644 --- a/sql/hive/src/test/scala/org/apache/spark/sql/hive/client/HiveClientSuite.scala +++ b/sql/hive/src/test/scala/org/apache/spark/sql/hive/client/HiveClientSuite.scala @@ -609,6 +609,13 @@ class HiveClientSuite(version: String) extends HiveVersionSuite(version) { } } + test("read table written by Hive") { + withTable("test_tbl") { + client.runSqlHive("CREATE TABLE test_tbl AS SELECT 1") + assert(versionSpark.sql("SELECT * from test_tbl").collect() === Array(Row(1))) + } + } + /////////////////////////////////////////////////////////////////////////// // Miscellaneous API /////////////////////////////////////////////////////////////////////////// diff --git a/sql/hive/src/test/scala/org/apache/spark/sql/hive/client/HiveVersionSuite.scala b/sql/hive/src/test/scala/org/apache/spark/sql/hive/client/HiveVersionSuite.scala index 1a45f6b15096..9866ce58775e 100644 --- a/sql/hive/src/test/scala/org/apache/spark/sql/hive/client/HiveVersionSuite.scala +++ b/sql/hive/src/test/scala/org/apache/spark/sql/hive/client/HiveVersionSuite.scala @@ -35,7 +35,8 @@ private[client] abstract class HiveVersionSuite(version: String) extends SparkFu hadoopConf.set("datanucleus.autoStartMechanismMode", "ignored") hadoopConf.set("hive.metastore.schema.verification", "false") // Since Hive 3.0, HIVE-19310 skipped `ensureDbInit` if `hive.in.test=false`. - if (version == "3.0" || version == "3.1" || version == "4.0") { + val ver = IsolatedClientLoader.hiveVersion(version) + if (hive.v3_0 <= ver) { hadoopConf.set("hive.in.test", "true") hadoopConf.set("hive.query.reexecution.enabled", "false") }