在pyspark中使用xgboost会导致importerror:无法导入名称“javapredictionmodel”

shstlldc  于 2021-05-27  发布在  Spark
关注(0)|答案(0)|浏览(677)

这是我第一次尝试在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,他们的帮助是非常感谢的。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题