我正在尝试使用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的本地安装。为了使我的项目自成一体,我需要嵌入Hive服务,包括HDFS和MapReduce集群。我尝试使用相同的Spring方法启动Hive服务器,并将其指向MiniDFSCluster和MiniMRCluster,类似于Hive QTestUtil源代码和HBaseTestUtility中使用的模式。但是,我无法使其正常工作。
在尝试破坏Hive集成测试三天后,我想我会问社区:
- 您如何建议我对Hive作业进行集成测试?
- 您是否有一个可用的JUnit示例,用于使用内存HDFS,MR和Hive实例集成测试Hive作业?
我看过的其他资源:
编辑:我完全知道,通过对Hadoop集群(本地或远程)进行处理,可以对全栈Hive实例运行集成测试。如上所述,问题在于这不是有效测试Hive工作流程的可行解决方案。