模型怎么部署到Spark?

Posted 风控建模

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模型怎么部署到Spark?相关的知识,希望对你有一定的参考价值。

对于数据量大且依赖字段多的特征类模型,如各种画像模型、行为模型,一般都是批量更新的,数据存在大数据库表中,决策引擎不好支持,需要自己进行开发打分。


一种简单粗暴的方法是把模型特征从数据表(如hive)拉到磁盘上,然后读到内存来打分,再把结果导入数据表,不过这种单机版操作耗内存且容易出错。


在这篇文章,小编就来分享下怎么把建好的模型部署到大数据平台spark上打分。


目前主流都是先用python建模,再导出模型用于打分,本文针对的就是这种情况,不考虑直接用spark训练模型的情况。


ready go.


step1. 模型OK了,保存模型到pkl文件



step2. 在命令行使用anaconda创建一个新环境py37,名字可以任取,注意指定python的版本,这里是python3的环境。没有anaconda的请先安装。


模型怎么部署到Spark?

模型怎么部署到Spark?


step3. 看下新环境放在哪里了

模型怎么部署到Spark?


step4. 切换到新环境py37,并看下里面有哪些包

模型怎么部署到Spark?


step5. 在新环境下,先升级pip,再安装各种依赖包

模型怎么部署到Spark?


step6. 确保依赖包都OK了,把环境py37打包,放到/tmp/py37.zip,并把/tmp/py37.zip 上传到Hadoop hdfs。


模型怎么部署到Spark?

模型怎么部署到Spark?


step7. 建立如下目录结构,其中model文件夹放模型打分python代码,pkl存放模型pkl文件。

模型怎么部署到Spark?

main.py用于加载本地模型打分代码环境,并选择运行哪个模型,文件内容如下:

模型怎么部署到Spark?

打分文件prea2_v2.py内容示例(主要逻辑):

模型怎么部署到Spark?


step8.  写一个shell脚本delopy.sh 用来打包python打分代码,内容如下:

模型怎么部署到Spark?


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)

Spark 进程模型与分布式部署:什么是分布式计算?

深度学习工业级部署实践:基于Spark部署Tensorflow深度学习模型