模型怎么部署到Spark?
Posted 风控建模
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模型怎么部署到Spark?相关的知识,希望对你有一定的参考价值。
对于数据量大且依赖字段多的特征类模型,如各种画像模型、行为模型,一般都是批量更新的,数据存在大数据库表中,决策引擎不好支持,需要自己进行开发打分。
一种简单粗暴的方法是把模型特征从数据表(如hive)拉到磁盘上,然后读到内存来打分,再把结果导入数据表,不过这种单机版操作耗内存且容易出错。
在这篇文章,小编就来分享下怎么把建好的模型部署到大数据平台spark上打分。
目前主流都是先用python建模,再导出模型用于打分,本文针对的就是这种情况,不考虑直接用spark训练模型的情况。
ready go.
step1. 模型OK了,保存模型到pkl文件
step2. 在命令行使用anaconda创建一个新环境py37,名字可以任取,注意指定python的版本,这里是python3的环境。没有anaconda的请先安装。
step3. 看下新环境放在哪里了
step4. 切换到新环境py37,并看下里面有哪些包
step5. 在新环境下,先升级pip,再安装各种依赖包
step6. 确保依赖包都OK了,把环境py37打包,放到/tmp/py37.zip,并把/tmp/py37.zip 上传到Hadoop hdfs。
step7. 建立如下目录结构,其中model文件夹放模型打分python代码,pkl存放模型pkl文件。
main.py用于加载本地模型打分代码环境,并选择运行哪个模型,文件内容如下:
打分文件prea2_v2.py内容示例(主要逻辑):
step8. 写一个shell脚本delopy.sh 用来打包python打分代码,内容如下:
step9. 再写一个shell脚本run_pyspark.sh用来启动pyspark,执行我们的python 打分代码, 关键要注意红框的内容,必须要对应上,否则可能python环境在集群上启动不成功:
step10. 使用crontab设置个定时任务,每天定时跑脚本run_pyspark.sh,如果模型打分的python文件有更新,只需要执行step8.中的deploy.sh更新下源码就OK了,其他的可以保持不变。
这个操作看起来挺简单的,网上也有类似的教程,小编试过很多都有这样那样的问题,不是集群版本不一致就是找不到环境。本文的方法小编花了挺多时间摸索,亲测是有效的。当然,用pyspark调用pkl对大数据打分也有些要注意的点,后面文章再写吧~
以上是关于模型怎么部署到Spark?的主要内容,如果未能解决你的问题,请参考以下文章
如何将Python算法模型注册成Spark UDF函数实现全景模型部署
如何将Python算法模型注册成Spark UDF函数实现全景模型部署
如何将Python算法模型注册成Spark UDF函数实现全景模型部署
Pytorch基础教程33spark或dl模型部署(MLFlow/ONNX/Runtime/tensorflow serving)