集成测试 Hive 作业
我正在尝试使用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集成测试,我想我会问社区:
- 你如何推荐 I 集成测试 Hive 作业?
- 您是否有一个工作 JUnit 示例,用于使用内存中 HDFS、MR 和 Hive 实例对 Hive 作业进行集成测试?
我查看的其他资源:
编辑:我完全知道,针对Hadoop集群(无论是本地还是远程)工作可以针对全栈Hive实例运行集成测试。如前所述,问题在于这不是有效测试 Hive 工作流的可行解决方案。