这是我第一次尝试在pyspark中使用xgboost,因此我对java和pyspark的体验仍处于学习阶段。
我在《走向数据科学》中看到了一篇很棒的文章,题目是pyspark-ml和xgboost完全集成在kaggle-titanic数据集上测试,作者在这里介绍了pyspark中xgboost的用例。
我试图跟着台阶走,但被吓了一跳。
安装
我从maven下载了两个jar文件,并将它们放在笔记本所在的同一个目录中。
xgboost4j版本0.72
xgboost4j spark版本0.72
我还下载了xgboost Package 文件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文件,但我可能错了。
如果任何好心人已经在Pypark运行xgboost,他们的帮助是非常感谢的。
暂无答案!
目前还没有任何答案,快来回答吧!