问题描述
这是我第一次尝试在pyspark中使用xgboost,因此我在Java和Pyspark方面的经验仍处于学习阶段。
我看到了一篇标题为PySpark ML and XGBoost full integration tested on the Kaggle Titanic dataset的关于数据科学的出色文章,作者在pyspark中介绍了xgboost的用例。
我尝试按照这些步骤操作,但被ImportError击中。
安装
我已经从maven下载了两个jar文件,并将它们放在笔记本所在的目录中。
我还将xgboost wrapper file sparkxgb.zip下载到了路径~/Softwares/sparkxgb.zip
。
我的jupyter笔记本第一个单元格
import xgboost
print(xgboost.__version__) # 1.2.0
import os
os.environ['PYSPARK_SUBMIT_ARGS'] = '--jars xgboost4j-spark-0.72.jar,xgboost4j-0.72.jar pyspark-shell'
HOME = os.path.expanduser('~')
import findspark
findspark.init(HOME + "/Softwares/spark-3.0.0-bin-hadoop2.7")
import pyspark
from pyspark.sql.session import SparkSession
from pyspark.sql.types import *
from pyspark.ml.feature import StringIndexer,VectorAssembler
from pyspark.ml import Pipeline
from pyspark.sql.functions import col
spark = SparkSession\
.builder\
.appName("PySpark XGBOOST Titanic")\
.getOrCreate()
spark.sparkContext.addPyFile(HOME + "/Softwares/sparkxgb.zip")
print(pyspark.__version__) # 3.0.0
# this does not give any error
# Computer: MacOS
此单元格显示错误
from sparkxgb import XGBoostEstimator
错误
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
<ipython-input-7-cf2ff39c26f4> in <module>
----> 1 from sparkxgb import XGBoostEstimator
/private/var/folders/tb/7xdk9scs79j9hxzcl3l_s6k00000gn/T/spark-1cf282a4-f3f2-42b3-a064-6bbd8751489e/userFiles-abca5e59-5af3-4b3d-a3bc-edc2973e9995/sparkxgb.zip/sparkxgb/__init__.py in <module>
18
19 from sparkxgb.pipeline import XGBoostPipeline,XGBoostPipelineModel
---> 20 from sparkxgb.xgboost import XGBoostEstimator,XGBoostClassificationModel,XGBoostRegressionModel
21
22 __all__ = ["XGBoostEstimator","XGBoostClassificationModel","XGBoostRegressionModel",/private/var/folders/tb/7xdk9scs79j9hxzcl3l_s6k00000gn/T/spark-1cf282a4-f3f2-42b3-a064-6bbd8751489e/userFiles-abca5e59-5af3-4b3d-a3bc-edc2973e9995/sparkxgb.zip/sparkxgb/xgboost.py in <module>
19 from pyspark.ml.param import Param
20 from pyspark.ml.param.shared import HasFeaturesCol,HasLabelCol,HasPredictionCol,HasWeightCol,HasCheckpointInterval
---> 21 from pyspark.ml.util import JavaMLWritable,JavaPredictionModel
22 from pyspark.ml.wrapper import JavaEstimator,JavaModel
23 from sparkxgb.util import XGBoostReadable
ImportError: cannot import name 'JavaPredictionModel' from 'pyspark.ml.util' (/Users/poudel/Softwares/spark-3.0.0-bin-hadoop2.7/python/pyspark/ml/util.py)
问题
- 如何解决该错误并在pyspark中运行xgboost?
也许我没有将下载的jar文件放置到正确的路径。 (我将它们放置在有jupyter笔记本文件的工作目录中)。我需要将这些文件放在其他地方吗?我假设jupyter自动加载路径.
并看到了这些jar文件,但我可能是错的。
如果有任何优秀的撒玛利亚人已经在pyspark中运行过xgboost,他们的帮助将不胜感激。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)