I'm trying to do this in unit tests:
val sConf = new SparkConf()
.setAppName("RandomAppName")
.setMaster("local")
val sc = new SparkContext(sConf)
val sqlContext = new TestHiveContext(sc) // tried new HiveContext(sc) as well
But I get this:
[scalatest] Exception encountered when invoking run on a nested suite - java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient *** ABORTED ***
[scalatest] java.lang.RuntimeException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient
[scalatest] at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:346)
[scalatest] at org.apache.spark.sql.hive.client.ClientWrapper.<init>(ClientWrapper.scala:120)
[scalatest] at org.apache.spark.sql.hive.HiveContext.executionHive$lzycompute(HiveContext.scala:163)
[scalatest] at org.apache.spark.sql.hive.HiveContext.executionHive(HiveContext.scala:161)
[scalatest] at org.apache.spark.sql.hive.HiveContext.<init>(HiveContext.scala:168)
[scalatest] at org.apache.spark.sql.hive.test.TestHiveContext.<init>(TestHive.scala:72)
[scalatest] at mypackage.NewHiveTest.beforeAll(NewHiveTest.scala:48)
[scalatest] at org.scalatest.BeforeAndAfterAll$class.beforeAll(BeforeAndAfterAll.scala:187)
[scalatest] at mypackage.NewHiveTest.beforeAll(NewHiveTest.scala:35)
[scalatest] at org.scalatest.BeforeAndAfterAll$class.run(BeforeAndAfterAll.scala:253)
[scalatest] at mypackage.NewHiveTest.run(NewHiveTest.scala:35)
[scalatest] at org.scalatest.Suite$class.callExecuteOnSuite$1(Suite.scala:1491)
The code works perfectly when I run using spark-submit, but not in unit tests. How do I fix this for unit tests?
It's an old question but I ran into similar issues, I ended up using spark-testing-base:
import com.holdenkarau.spark.testing.SharedSparkContext
import org.apache.spark.sql.hive.test.TestHiveContext
import org.scalatest.FunSuite
class RowToProtoMapper$Test extends FunSuite with SharedSparkContext {
test("route mapping") {
val hc = new TestHiveContext(sc)
/* Some test */
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With