如何在Scala环境下使用内存版Derby数据库进行Hive测试
使用Spark-Hive 2.3.0 + Scala 2.11搭建Hive单元测试框架
最近我正好在用Spark-Hive 2.3.0搭配Scala 2.11搭建Hive相关的单元测试框架,这套方案对自动化测试太友好了,分享下关键要点:
核心测试类的优势:Spark-Hive提供了
TestHiveContext和TestHiveSparkSession这两个实用工具,用它们的话,完全不需要启动Hadoop集群、Spark集群甚至任何外部服务,就能在单元测试里直接调用Hive的功能——不用依赖外部环境,跑测试又快又稳,特别适合自动化流水线。元数据存储的默认配置:Hive的元数据需要数据库来存储,在这种单元测试模式下,默认会用Derby作为嵌入式数据库,通过
javax.jdo.option.ConnectionURL参数来配置。它的默认值是:jdbc:derby:;databaseName=<file-path>;create=true这里的
<file-path>指向本地一个文件路径,Derby会自动创建对应的数据库文件,测试结束后可以按需清理,不会污染本地环境。
小提醒:Derby本身是单连接数据库,但单元测试大多是单线程执行的,这个限制基本不会影响测试流程;如果你的测试需要多线程并发,可能得考虑替换成其他嵌入式数据库,但绝大多数场景下Derby足够用了。
内容的提问来源于stack exchange,提问作者Uncle Long Hair
相关产品推荐
相关产品推荐

