基于 LAS pyspark 的自有 python 工程使用&依赖导入

大数据数据中台技术服务知识库
问题描述

LAS 产品中提供了 pyspark 的方式提交作业。如果用户本地有 python 工程,工程中引入了需要 pip install 或自己开发的模块,这种情况直接使用 LAS 的命令窗口提交是无法满足要求的。本文将主要阐述如何处理这种场景。

问题分析

此类问题需要通过打包代码与打包 python 虚拟环境的方式解决。

解决方案

我们通过案例说明该问题解决方式。 (1)打包一个名称为 pythonCode.zip 的工程,里面只包含代码 test.py 代码,test.py 代码内容如下:

    import pandas as pd
      df = pd.DataFrame({'address': ['四川省 成都市','湖北省 武汉市','浙江省 杭州市']})
      res = df['address'].str.split(' ', expand=True)
      res.columns = ['province', 'city']print(res)

(2)打包 python 自定义虚拟环境,命名为 python379.zip,打包命令如下:

   #构造python版本为本地python3对应的python版本
   virtualenv --python=$(which python3) --clear python379
   #进入到该环境下
   source python333/bin/activate
   #安装koalas
   echo 'koalas' > requirements.txt
   pip install -r requirements.txt
   #打包独立环境,产出zip包
   python379.zipcd python333 && zip -r python333.zip *
   #退出
   deactivate

(3)通过 DataLeap 资源管理上传代码包和虚拟环境包 (4)通过如下方式调用步骤1中的代码 图片

【说明】 代码格式为:

from 代码包名称 import 代码文件名称

作业参数: 图片

填写参数格式如下:

参数名
spark.unpackUseCommand.enabledtrue
spark.pyspark.driver.pythonpython379/bin/python3 (前缀为资源名)
spark.pyspark.pythonpython379.zip/bin/python3 (前缀为资源名+.zip)
las.spark.jar.depend.archives[{"schema":"您当前的schema","fileName":"python379(python虚拟环境打包的名称)"}]

运行结果为: 图片

如果您有其他问题,欢迎您联系火山引擎技术支持服务

0
0
0
0
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论