Вы можете запустить свои юнит-тесты, используя встроенный Hive, который поставляется из коробки со свечным улей:
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-hive_${scala.compat.version}</artifactId>
<version>${spark.version}</version>
</dependency>
Используя выбранную вами схему модульного тестирования, вы создаете локальный SparkContext и HiveContext:
// TODO: set this up before running all your tests
val conf = new SparkConf().
setMaster("local[*]").
setAppName("test").
set("spark.ui.enabled", "false").
set("spark.app.id", "SparkHiveTests").
set("spark.driver.host", "localhost")
val sc = new SparkContext(conf)
val hiveContext = new HiveContext(sc)
// default directory is /user/hive/warehouse which doesn't exist on my local machine so use a different dir
hiveContext.setConf("hive.metastore.warehouse.dir", "/tmp/hive/warehouse")
Затем вы можете создавать / удалять таблицы и выполнять запросы, используя встроенный Hive!
// data will persist in this directory so drop the table to get a clean run if it exists
hiveContext.sql("DROP TABLE IF EXISTS src")
hiveContext.sql("CREATE TABLE src (key INT, value STRING)")
hiveContext.sql("LOAD DATA LOCAL INPATH 'src/test/resources/kv1.txt' INTO TABLE src")
val result = hiveContext.sql("SELECT count(*) FROM src").collect().head
assert(result(0) === 3l)
Извините за Scala здесь, но он должен быть очень похож на Java. Если это не имеет смысла, дайте мне знать, и я могу попробовать переписать его на Java.