pytest 插件在 pyspark 的支持下运行测试。
项目描述
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_context和 spark_session可用于您的测试。
注意:如果您使用 pip 安装了 pyspark(例如pip install pyspark),则无需定义 SPARK_HOME - 它应该已经可以导入。在这种情况下,不要在 pytest (pytest.ini / –spark_home) 或环境变量中定义 SPARK_HOME。
安装
$ pip install pytest-spark
用法
设置 Spark 位置
要使用所需的 spark_home 位置运行测试,您需要使用以下方法之一定义它:
指定命令行选项“–spark_home”:
$ pytest --spark_home=/opt/spark
在项目目录中的pytest.ini中添加“spark_home”值:
[pytest] spark_home = /opt/spark
设置“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-py3-none-any.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | cabfbcfca6a4876c5e03b151ba9217f3888fe5142154c1e885dd7902afa85a89 |
|
| MD5 | dfaeba8dbed1bbae15b9db0f1bb36ceb |
|
| 布莱克2-256 | fa580a5820b4912e63f50b043170eeda56efab52104877818e2ac08c2eecc26d |