10

我即将开始一个使用 Apache Hadoop/Hive 的项目,该项目将涉及一组 hive 查询脚本来为各种下游应用程序生成数据馈送。这些脚本似乎是某些单元测试的理想候选者——它们代表了我的数据存储和客户端应用程序之间的 API 合同的履行,因此,为给定的起始数据集编写预期结果应该是微不足道的。我的问题是如何运行这些测试。

如果我使用 SQL 查询,我可以使用 SQLlite 或 Derby 之类的工具来快速启动测试数据库、加载测试数据并针对它们运行一组查询测试。不幸的是,我不知道有任何用于 Hive 的此类工具。目前,我最好的想法是让测试框架启动一个 hadoop 本地实例并针对它运行 Hive,但我以前从未这样做过,我不确定它是否会起作用,或者是否是正确的路径。

另外,我对关于我正在做的是单元测试还是集成测试的迂腐讨论不感兴趣——我只需要能够证明我的代码有效。

4

4 回答 4

4

Hive 具有特殊的独立模式,专门为测试目的而设计。在这种情况下,它可以在没有 hadoop 的情况下运行。我认为这正是您所需要的。有一个文档链接:

http://wiki.apache.org/hadoop/Hive/HiveServer

于 2011-02-24T19:04:48.950 回答
4

我正在作为一个团队的一员来支持大数据和分析平台,我们也有这种问题。

我们已经搜索了一段时间,我们发现了两个非常有前途的工具:https://github.com/klarna/HiveRunner https://github.com/bobfreitas/HadoopMiniCluster

HiveRunner 是一个构建在 JUnit 之上的框架,用于测试 Hive 查询。它以内存中的 HSQL 作为元存储启动一个独立的 HiveServer。有了它,你可以存根表、视图、模拟样本等。

虽然 Hive 版本有一些限制,但我绝对推荐它

希望对你有帮助 =)

于 2014-09-02T19:04:48.413 回答
3

您可能还需要考虑以下博客文章,该文章描述了使用自定义实用程序类和 ant 自动化单元测试:http: //dev.bizo.com/2011/04/hive-unit-testing.html

于 2011-08-29T22:40:21.340 回答
2

我知道这是一个旧线程,但以防万一有人遇到它。我跟进了整个 minicluster 和 hive 测试,发现 MR2 和 YARN 发生了变化,但方式很好。我整理了一篇文章和 github repo 来提供一些帮助:

http://www.lopakalogic.com/articles/hadoop-articles/hive-testing/

希望能帮助到你!

于 2015-05-25T18:06:24.693 回答