本文主要是介绍利用pyspark评估lightgbm模型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1.打包conda虚拟环境并上传到hdfs
(1)打包虚拟环境
cd /home/work/.conda/envs/light_gbm
zip -r -q lgb.zip ./
注意:这里打包的位置会影响到后面指定executor的pyspark环境。
一定要到虚拟环境light_gbm这一层目录下,而不是envs这一层目录
(2)把打包好的虚拟环境上传到hdfs
hadoop fs -put lgb.zip /tmp/lip038/lgb_envs
2.评估代码
import os
# 可以在这里指定executor的环境,也可以在spark-submit时指定:
# --conf spark.pyspark.python=./light_gbm/bin/python
os.environ['PYSPARK_PYTHON'] = './light_gbm/bin/python'
from pyspark import SparkContext
import lightgbm as lgb# 处理成可以直接喂给模型的格式,如果数据已经处理过,这里可以不作处理
# 根据个人需求
def _parser(x):passdef _predict(data_lst, broadcast_model):tmp = []for data in data_lst:tmp.append(data)return broadcast_model.value.predict(tmp)def run():sc = SparkContext.getOrCreate()# 评估样本所在路径data_path="/tmp/lip038/data/eval_data"data = sc.textFile(data_path).map(_parser).repartition(200)# 模型所在路径,lgb_model是模型名称,不是目录model_path = "/tmp/lip038/model/lgb_model"model = lgb.Booster(model_file=model_path)#广播模型文件broadcast_model = sc.broadcast(model)res = data.mapPartitions(lambda x: _predict(x, broadcast_model))res.saveAsTextFile('/tmp/lip038/lgb_res/test')
2.运行代码
spark-submit \--master yarn \--deploy-mode client \--driver-memory 8G \--num-executors 8 \--executor-memory 10G \--executor-cores 8 \--conf spark.yarn.dist.archives=/tmp/lip038/lgb_envs/lgb.zip#light_gbm \--conf spark.pyspark.driver.python=/home/work/.conda/envs/search_rank/bin/python
有两处需要注意:
(1)
--conf spark.yarn.dist.archives=/tmp/lip038/lgb_envs/lgb.zip#light_gbm
会将hdfs上打包的conda环境解压到每一个executor的工作目录,“#”后面是目录名称:light_gbm
(2)
--conf spark.pyspark.driver.python=/home/work/.conda/envs/light_gbm/bin/python
client模式下,需要指定driver端的python环境
这篇关于利用pyspark评估lightgbm模型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!