在本地测试Hive + spark python程序?

时间:2015-07-16 16:12:50

标签: python unit-testing testing apache-spark hive

我想用spark + hive开发程序并在本地进行单元测试。

有没有办法让hive在进程中运行?还是其他有助于单元测试的东西?

我在Mac上使用python 2.7

1 个答案:

答案 0 :(得分:2)

编辑:自Spark 2开始,就可以创建一个可用于测试的本地蜂房Metastore。最初的答案在底部。

来自spark sql programming guide

  

使用Hive时,必须使用Hive实例化SparkSession   支持,包括连接到持久性Hive Metastore,   支持Hive serdes和Hive用户定义的函数。 做的用户   没有现有的Hive部署仍然可以启用Hive支持。   如果未由hive-site.xml配置,则自动进行上下文   在当前目录中创建metastore_db并创建一个目录   由spark.sql.warehouse.dir配置,默认为该目录   Spark应用程序所在的当前目录中的spark-warehouse   开始。请注意hive.metastore.warehouse.dir属性   自Spark 2.0.0以来,不推荐使用hive-site.xml。相反,使用   spark.sql.warehouse.dir指定数据库的默认位置   仓库。您可能需要向用户授予写权限   启动Spark应用程序。

基本上意味着如果你不配置hive,spark会为你创建一个Metastore,并将它存储在本地磁盘上。

你应该知道的

2配置:

  • spark.sql.warehouse.dir - 一个spark配置,指向表中数据存储在磁盘上的位置,即:"/path/to/test/folder/warehouse/"
  • javax.jdo.option.ConnectionURL - 这是一个配置单元配置,应该在hive-site.xml中设置(或作为系统属性),即:"jdbc:derby:;databaseName=/path/to/test/folder/metastore_db;create=true"

这些不是强制性的(因为它们具有默认值),但有时显式设置它们很方便

您需要确保在测试之间清理测试文件夹,以便为每个套件提供干净的环境

原始答案:

我建议安装一个vagrant框,其中包含计算机虚拟机中的完整(小)hadoop群集。

你可以在这里找到一个准备好的流浪者:http://blog.cloudera.com/blog/2014/06/how-to-install-a-virtual-apache-hadoop-cluster-with-vagrant-and-cloudera-manager/

这样,您的测试可以在与生产相同的环境中运行