Skip to main content

pytest 插件在 pyspark 的支持下运行测试。

项目描述

https://travis-ci.org/malexer/pytest-spark.svg?branch=master

pytest插件在 pyspark ( Apache Spark )的支持下运行测试。

这个插件将允许在pytest.ini中指定 SPARK_HOME 目录, 从而使“pyspark”可以在由 pytest 执行的测试中导入。

您还可以在pytest.ini中定义“spark_options”来自定义 pyspark,包括允许加载外部库的“spark.jars.packages”选项(例如“com.databricks:spark-xml”)。

pytest-spark 提供会话范围固定装置spark_contextspark_session可用于您的测试。

注意:如果您使用 pip 安装了 pyspark(例如pip install pyspark),则无需定义 SPARK_HOME - 它应该已经可以导入。在这种情况下,不要在 pytest (pytest.ini / –spark_home) 或环境变量中定义 SPARK_HOME。

安装

$ pip install pytest-spark

用法

设置 Spark 位置

要使用所需的 spark_home 位置运行测试,您需要使用以下方法之一定义它:

  1. 指定命令行选项“–spark_home”:

    $ pytest --spark_home=/opt/spark
  2. 在项目目录中的pytest.ini中添加“spark_home”值:

    [pytest]
    spark_home = /opt/spark
  3. 设置“SPARK_HOME”环境变量。

pytest-spark 将尝试从提供的位置导入pyspark 。

自定义 spark_options

只需在pytest.ini中定义“spark_options” ,例如:

[pytest]
spark_home = /opt/spark
spark_options =
    spark.app.name: my-pytest-spark-tests
    spark.executor.instances: 1
    spark.jars.packages: com.databricks:spark-xml_2.12:0.5.0

使用spark_context夹具

在您的测试中使用夹具spark_context作为常规的 pyspark 夹具。SparkContext 实例将被创建一次并在整个测试会话中重复使用。

例子:

def test_my_case(spark_context):
    test_rdd = spark_context.parallelize([1, 2, 3, 4])
    # ...

使用spark_session夹具(Spark 2.0 及更高版本)

在您的测试中使用fixture spark_session作为常规的pyspark 夹具。启用 Hive 支持的 SparkSession 实例将被创建一次,并在整个测试会话中重复使用。

例子:

def test_spark_session_dataframe(spark_session):
    test_df = spark_session.createDataFrame([[1,3],[2,4]], "a: int, b: int")
    # ...

覆盖spark_session夹具的默认参数

默认情况下spark_session将加载以下配置:

例子:

{
    'spark.app.name': 'pytest-spark',
    'spark.default.parallelism': 1,
    'spark.dynamicAllocation.enabled': 'false',
    'spark.executor.cores': 1,
    'spark.executor.instances': 1,
    'spark.io.compression.codec': 'lz4',
    'spark.rdd.compress': 'false',
    'spark.sql.shuffle.partitions': 1,
    'spark.shuffle.compress': 'false',
    'spark.sql.catalogImplementation': 'hive',
}

您可以在pytest.ini中覆盖其中一些参数。例如,删除 spark session 的 Hive 支持:

例子:

[pytest]
spark_home = /opt/spark
spark_options =
    spark.sql.catalogImplementation: in-memory

发展

测试

在本地运行测试:

$ docker-compose up --build

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

pytest-spark-0.6.0.tar.gz (5.7 kB 查看哈希)

已上传 source

内置分布

pytest_spark-0.6.0-py3-none-any.whl (6.9 kB 查看哈希

已上传 py3