Mar*_*cin 5 python testing unit-testing hive apache-spark
我想用 Spark + Hive 开发程序并在本地进行单元测试。
有没有办法让 hive 在进程内运行?或者其他有助于单元测试的东西?
我在 Mac 上使用 python 2.7
编辑:从 Spark 2 开始,可以创建一个可在测试中使用的本地 Hive 元存储。原来的答案在底部。
使用 Hive 时,必须实例化具有 Hive 支持的 SparkSession,包括与持久 Hive 元存储的连接、对 Hive serdes 的支持以及 Hive 用户定义的函数。没有现有 Hive 部署的用户仍然可以启用 Hive 支持。当hive-site.xml没有配置时,上下文会自动在当前目录下创建metastore_db,并创建spark.sql.warehouse.dir配置的目录,默认为Spark应用程序当前目录下的spark-warehouse目录已启动。请注意,自 Spark 2.0.0 起,hive-site.xml 中的 hive.metastore.warehouse.dir 属性已弃用。相反,使用spark.sql.warehouse.dir指定数据库在仓库中的默认位置。您可能需要向启动 Spark 应用程序的用户授予写入权限。
基本上这意味着如果您不配置 hive,spark 将为您创建一个元存储,并将其存储在本地磁盘上。
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"这些不是强制性的(因为它们有默认值),但有时显式设置它们很方便
您需要确保在测试之间清理测试文件夹,以便为每个套件提供一个干净的环境
原答案:
我建议在您计算机上的虚拟机中安装一个包含完整(小型)hadoop 集群的vagrant box。
你可以在这里找到一个现成的流浪者:http://blog.cloudera.com/blog/2014/06/how-to-install-a-virtual-apache-hadoop-cluster-with-vagrant-and-cloudera-manager/
这样您的测试就可以在与生产相同的环境中运行
| 归档时间: |
|
| 查看次数: |
3089 次 |
| 最近记录: |