databricks 上的 XGBoost - 过时的 scala 版本
XGBoost on databricks - outdated scala version
我正在尝试按照找到的数据块上的 xgboost 示例进行操作 here
在我进入实际训练部分之前,一切似乎都运行良好:
val xgboostModelRDD = XGBoost.trainWithRDD(trainRDD, ...)
此时我得到一个错误。由于堆栈跟踪相当短,我将其粘贴在这里:
java.lang.NoSuchMethodError: scala.Predef$.ArrowAssoc(Ljava/lang/Object;)Ljava/lang/Object;
at ml.dmlc.xgboost4j.scala.spark.XGBoost$.overrideParamsAccordingToTaskCPUs(XGBoost.scala:232)
at ml.dmlc.xgboost4j.scala.spark.XGBoost$.trainWithRDD(XGBoost.scala:293)
经过一些研究,该错误的原因似乎是不兼容的 Scala 版本。 Databricks 社区版集群预配置了 scala 版本 2.10。这个cannot be modified.
这是否意味着无法使用社区版 运行 xgboost,或者是否有解决此问题的方法?
我认为您链接到的论坛 post 有点过时了。 Databricks 社区版实际上允许您选择集群的 Scala 版本。
首先,导航至集群页面并单击蓝色 "Create Cluster" 按钮:
从 "Databricks Runtime Version" 下拉菜单中,您可以选择包含所需 Scala 和 Spark 版本的运行时版本:
我正在尝试按照找到的数据块上的 xgboost 示例进行操作 here
在我进入实际训练部分之前,一切似乎都运行良好:
val xgboostModelRDD = XGBoost.trainWithRDD(trainRDD, ...)
此时我得到一个错误。由于堆栈跟踪相当短,我将其粘贴在这里:
java.lang.NoSuchMethodError: scala.Predef$.ArrowAssoc(Ljava/lang/Object;)Ljava/lang/Object;
at ml.dmlc.xgboost4j.scala.spark.XGBoost$.overrideParamsAccordingToTaskCPUs(XGBoost.scala:232)
at ml.dmlc.xgboost4j.scala.spark.XGBoost$.trainWithRDD(XGBoost.scala:293)
经过一些研究,该错误的原因似乎是不兼容的 Scala 版本。 Databricks 社区版集群预配置了 scala 版本 2.10。这个cannot be modified.
这是否意味着无法使用社区版 运行 xgboost,或者是否有解决此问题的方法?
我认为您链接到的论坛 post 有点过时了。 Databricks 社区版实际上允许您选择集群的 Scala 版本。
首先,导航至集群页面并单击蓝色 "Create Cluster" 按钮:
从 "Databricks Runtime Version" 下拉菜单中,您可以选择包含所需 Scala 和 Spark 版本的运行时版本: