2016-12-16 3 views
2

Mein ganzer build.sbt ist:Spark-Unit Testing

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" 
) 

ich einen einfachen Test haben. Offensichtlich ist dies nur ein Ausgangspunkt, würde Ich mag mehr testen:

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) 
    } 
} 

Ich betreibe sbt clean test und einen Fehler bekommen:

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

Für meine Dev-Umgebung, ich bin die Verwendung von spark-2.0.2-bin-hadoop2.7.tar.gz

Muss ich diese Umgebung in irgendeiner Weise konfigurieren? Offensichtlich ist HiveConf eine transitive Spark-Abhängigkeit

+3

Ich denke, Sie müssen '" org.apache.spark "%%" spark-hive "%" 2.0.2 "' zu Ihren Abhängigkeiten explizit hinzufügen. –

Antwort

2

Wie @ daniel-de-paula in den Kommentaren erwähnt, müssen Sie spark-hive als explizite Abhängigkeit hinzufügen (Sie können dies jedoch auf den Testbereich beschränken, wenn Sie nicht verwenden Bienenstock in Ihrer Anwendung sein selbst). Spark-Hive ist keine transitive Abhängigkeit von Spark-Core, weshalb dieser Fehler passiert ist. spark-hive wird von spark-tested-base als Abhängigkeit ausgeschlossen, sodass Personen, die nur RDD-Tests durchführen, diese nicht als Abhängigkeit hinzufügen müssen.

+0

Hallo - Kann ich Sie bitten, dieses Detail hier hinzuzufügen - https://github.com/holdenk/spark-testing-base/wiki/DataFrameSuiteBase - Es wäre wirklich hilfreich für andere. –