【问题标题】:Testing Hive + spark python programs locally?在本地测试 Hive + spark python 程序?
【发布时间】:2015-07-16 16:12:50
【问题描述】:

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

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

我在 Mac 上使用 python 2.7

【问题讨论】:

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


    【解决方案1】:

    编辑:从 spark 2 开始,可以创建一个可用于测试的本地配置单元元存储。原始答案在底部。


    来自spark sql programming guide

    使用 Hive 时,必须使用 Hive 实例化 SparkSession 支持,包括与持久 Hive 元存储的连接, 支持 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 配置,应该在 hive-site.xml 中设置(或作为系统属性),即:"jdbc:derby:;databaseName=/path/to/test/folder/metastore_db;create=true"

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

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


    原答案:

    我建议在您机器上的虚拟机中安装一个包含完整(小型)hadoop 集群的 vagrant 框。

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

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

    【讨论】:

    • 谢谢,我希望避免这种情况。
    • 一开始设置 vagrant box 可能会很痛苦,但从长远来看是值得的,特别是如果你在一个团队中工作,并且希望每个人都有一个简单的设置方法他们的测试环境
    猜你喜欢
    • 2021-03-04
    • 1970-01-01
    • 1970-01-01
    • 2018-10-20
    • 1970-01-01
    • 2019-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多