2016-12-16 34 views
2

我的整個build.sbt是:星火單元測試

name := """sparktest""" 

version := "1.0.0-SNAPSHOT" 

scalaVersion := "2.11.8" 

scalacOptions := Seq("-unchecked", "-deprecation", "-encoding", "utf8", "-Xexperimental") 

parallelExecution in Test := false 

libraryDependencies ++= Seq(
    "org.apache.spark" %% "spark-core" % "2.0.2", 
    "org.apache.spark" %% "spark-sql" % "2.0.2", 
    "org.apache.avro" % "avro" % "1.8.1", 

    "org.scalatest" %% "scalatest" % "3.0.1" % "test", 
    "com.holdenkarau" %% "spark-testing-base" % "2.0.2_0.4.7" % "test" 
) 

我有一個簡單的測試。顯然,這只是一個起點,我想測試更多:

package sparktest 

import com.holdenkarau.spark.testing.DataFrameSuiteBase 

import org.scalatest.FunSuite 

class SampleSuite extends FunSuite with DataFrameSuiteBase { 
    test("simple test") { 
    assert(1 + 1 === 2) 
    } 
} 

我跑sbt clean test並獲得衰竭:

Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hive.conf.HiveConf$ConfVars 

對於我的開發環境,我使用的spark-2.0.2-bin-hadoop2.7.ta​​r.gz

我必須以任何方式配置此環境嗎?顯然HiveConf是一個傳遞性的Spark依賴項

+3

我認爲你必須明確地向你的依賴添加 '「org.apache.spark」%%「spark-hive」%「2.0.2」'。 –

回答

2

由於@ daniel-de-paula在評論中提到,你需要添加spark-hive作爲顯式依賴(你可以限制它到測試範圍,但是如果你沒有使用蜂巢在你的應用程序中它自己)。 spark-hive不是spark-core的傳遞依賴,這就是發生這種錯誤的原因。 spark-hive作爲依賴項被排除在spark-testing-base之外,因此只進行RDD測試的人不需要將其作爲依賴項添加。

+0

嗨 - 我可以要求你在這裏添加這個細節 - https://github.com/holdenk/spark-testing-base/wiki/DataFrameSuiteBase - 這對其他人會有幫助。 –