本文介绍了如何在使用数据湖分析的Spark时支持archives
参数从而支持用户上传执行环境或者数据文件如机器学习模型等。
使用背景
当用户使用自建集群执行Spark作业时,可以使用--archives
上传压缩包到Spark作业的执行环境中,在Spark执行过程中可直接使用压缩包中的文件,从而支持数据包的上传、PySpark执行环境的上传等场景。DLA Spark也支持使用archives上传压缩包到Spark作业的执行环境。
注意
当前archives 支持 zip、tgz、tar、tar.gz 四种文件扩展名
PySpark使用自定义Virtualenv
注意
必须在Linux下执行以下操作
1. 在Linux下打包Python执行环境
常用的工具包括Virtualenv、Conda,您可以根据需求来选择对应的工具。请首先根据官方文档安装对应的工具到您的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中使用这个虚拟环境
用户可以在提交Spark作业时使用类似如下的配置来使用这个虚拟环境,可以看到通过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"
}
在文档使用中是否遇到以下问题
更多建议
匿名提交