我正在尝试使用Hive Thrift和JDBC接口编写一个非常简单的Hive作业,并且在设置一个不错的JUnit测试时遇到了麻烦。所谓“平凡”,是指该工作至少要经过一个MapReduce阶段,而不是仅与元存储打交道。
该测试应启动Hive服务器,将一些数据加载到表中,对该表运行一些非平凡的查询,然后检查结果。
我已经根据Spring参考连接了Spring上下文。但是,该作业在MapReduce阶段失败,抱怨没有Hadoop二进制文件存在:
java.io.IOException:无法运行程序“ / usr / bin / hadoop”(在目录“ / Users / yoni / opower / workspace / intellij_project_root”中):error = 2,没有这样的文件或目录
问题是Hive服务器正在内存中运行,但是要依靠Hive的本地安装才能运行。为了使我的项目自成一体,我需要嵌入Hive服务,包括HDFS和MapReduce集群。我试过使用相同的Spring方法启动Hive服务器,并将其指向MiniDFSCluster和MiniMRCluster,类似于Hive QTestUtil源代码和HBaseTestUtility中使用的模式。但是,我无法使其正常工作。
在尝试破坏Hive集成测试三天后,我想我会问社区:
您如何建议我对Hive作业进行集成测试?您是否有一个可用的JUnit示例,用于使用内存HDFS,MR和Hive实例集成测试Hive作业?我看过的其他资源:
Hive单元测试教程http://dev.bizo.com/2011/04/hive-unit-testing.htmlSpring Hive示例https://github.com/SpringSource/spring-hadoop-samples/tree/master/samples/hive编辑:我完全知道,通过对Hadoop集群(本地或远程)进行处理,可以对全栈Hive实例运行集成测试。如上所述,问题在于这不是有效测试Hive工作流的可行解决方案。