全部产品

Spark支持Virtualenv以及上传压缩文件

本文介绍了如何使用DLA Spark上传执行环境或者数据文件如机器学习模型等。

使用背景

当用户使用自建集群执行Spark作业时,可以使用archives上传压缩包到Spark作业的执行环境中,在Spark执行过程中可直接使用压缩包中的文件。DLA Spark也支持使用archives上传压缩包到Spark作业的执行环境。

注意

当前archives支持ziptgz、tar、tar.gz四种文件扩展名。

PySpark使用自定义Virtualenv

  1. 在Linux环境下打包Python执行环境。

    常用的执行环境打包工具包括VirtualenvConda,您可以根据您的需要来选择对应的工具,并安装工具到您的Linux环境中。

    注意

    当前Serverless Spark支持的最高Python主版本为3.7。

    以下示例使用virtualenv生成一个执行环境压缩包venv.zip,压缩包中包含了scikit-spark的特定版本。

    # create directory venv at current path with python3
    virtualenv --copies --download --python Python3.7 venv
    
    # active environment
    source venv/bin/activate
    
    # install third part modules
    pip install scikit-spark==0.4.0
    
    # check the result
    pip list
    
    # zip the environment
    zip -r venv.zip venv

    同理,使用Conda生成执行环境,请参考官方文档Conda管理虚拟环境

  2. 在Spark中使用Python执行环境。

    您可以在提交Spark作业时使用如下的代码配置来使用Python执行环境。您可以看到通过spark.pyspark.python来指向上传的运行包。同Spark开源社区的语义相同,venv.zip#PY3代表了将压缩包解压到计算节点工作目录的PY3文件夹下,继而可以从本地访问。

    {
        "name": "venv example",
        "archives": [
            "oss://test/venv.zip#PY3"
        ],
        "conf": {
            "spark.driver.resourceSpec": "medium",
            "spark.dla.connectors": "oss",
            "spark.executor.instances": 1,
            "spark.dla.job.log.oss.uri": "oss://test/spark-logs",
            "spark.pyspark.python": "./PY3/venv/bin/python3",
            "spark.executor.resourceSpec": "medium"
        },
        "file": "oss://test/example.py"
    }

    当不使用#重命名时,需要使用压缩包名字作为路径的一部分。

    {
        "name": "venv example",
        "archives": [
            "oss://test/venv.zip"
        ],
        "conf": {
            "spark.driver.resourceSpec": "medium",
            "spark.dla.connectors": "oss",
            "spark.executor.instances": 1,
            "spark.dla.job.log.oss.uri": "oss://test/spark-logs",
            "spark.pyspark.python": "./venv.zip/venv/bin/python3",
            "spark.executor.resourceSpec": "medium"
        },
        "file": "oss://test/example.py"
    }