使用 Python 3.10.0 在 PySpark 中加载 LightGBM 库时出错

问题描述 投票:0回答:1

描述:

在 Python 3.10.0 中使用 PySpark 时,我遇到了 LightGBM 回归器和分类器的问题。

环境:

PySpark版本:3.2.1 Python版本:3.10.0 Py4j版本:0.10.9.5 Spark jar 包:com.microsoft.azure:synapseml_2.12:0.11.0

错误信息:

java.lang.UnsatisfiedLinkError:无法加载库:/var/folders/dz/mc23060n2kq52djyhcxl9kmh0000gp/T/mml-natives17452036633252549823/lib_lightgbm.dylib

重现步骤:

  • 在 Python 中将 LightGBM 回归器或分类器与 PySpark DataFrame 结合使用 3.10.0.
  • 遇到上述错误。

所做的尝试: 我按照here提供的解决方案进行操作,并符号链接了已安装的 libomp,但问题仍然存在。

详细错误堆栈:

py4j.protocol.Py4JJavaError:调用 o5147.fit 时发生错误。 E:java.lang.UnsatisfiedLinkError:无法加载库:/var/folders/dz/mc23060n2kq52djyhcxl9kmh0000gp/T/mml-natives17452036633252549823/lib_lightgbm.dylib E 位于 java.base/java.lang.ClassLoader.loadLibrary(来源未知) E 位于 java.base/java.lang.Runtime.load0(来源未知) E 位于 java.base/java.lang.System.load(来源未知) E 位于 com.microsoft.azure.synapse.ml.core.env.NativeLoader.loadLibraryByName(NativeLoader.java:66) E 位于 com.microsoft.azure.synapse.ml.lightgbm.LightGBMUtils$.initializeNativeLibrary(LightGBMUtils.scala:33) E 位于 com.microsoft.azure.synapse.ml.lightgbm.LightGBMBase.train(LightGBMBase.scala:37) E 位于 com.microsoft.azure.synapse.ml.lightgbm.LightGBMBase.train$(LightGBMBase.scala:36) E 位于 com.microsoft.azure.synapse.ml.lightgbm.LightGBMRegressor.train(LightGBMRegressor.scala:39) E 位于 com.microsoft.azure.synapse.ml.lightgbm.LightGBMRegressor.train(LightGBMRegressor.scala:39) E at org.apache.spark.ml.Predictor.fit(Predictor.scala:151) E at org.apache.spark.ml.Predictor.fit(Predictor.scala:115) E at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(本机方法) E 位于 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(来源未知) E 位于 java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(来源未知) E 位于 java.base/java.lang.reflect.Method.invoke(来源未知) E 位于 py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244) E 位于 py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:357) E 位于 py4j.Gateway.invoke(Gateway.java:282) E 位于 py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132) E 位于 py4j.commands.CallCommand.execute(CallCommand.java:79) E 在 py4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182) E 位于 py4j.ClientServerConnection.run(ClientServerConnection.java:106) E 位于 java.base/java.lang.Thread.run(来源未知)

补充说明:

  • 该问题似乎与在 Python 3.10.0 中加载 LightGBM 库有关
  • 我检查了指定路径中是否存在lib_lightgbm.dylib。
  • 任何有关解决此问题的见解或建议将不胜感激。
machine-learning pyspark azure-synapse python-3.10 lightgbm
1个回答
0
投票

在突触中 Spark 3.2 即将退役。

enter image description here

所以,我建议您使用spark 3.3或3.4。

在这 2 个版本中的任何版本中,您都将内置

synapseml
包甚至 LightGBM,如下所示。

enter image description here

在这里,你可以看到spark 3.4中的

synapseml
版本是
1.0.2

如果您想配置不同版本,请执行以下命令,如本文档所述。

%%configure -f
{
  "name": "synapseml",
  "conf": {
      "spark.jars.packages": "com.microsoft.azure:synapseml_2.12:<version>",
      "spark.jars.repositories": "https://mmlspark.azureedge.net/maven",
      "spark.jars.excludes": "org.scala-lang:scala-reflect,org.apache.spark:spark-tags_2.12,org.scalactic:scalactic_2.12,org.scalatest:scalatest_2.12,com.fasterxml.jackson.core:jackson-databind",
      "spark.yarn.user.classpath.first": "true",
      "spark.sql.parquet.enableVectorizedReader": "false"
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.