PyPMML失敗找不到py4j jar錯誤

寫的arjun.kaimaparambilrajan

去年發表在:2022年5月16日

問題

PyPMML Python PMML得分庫。

在安裝PyPMML在磚集群中,它與一個失敗Py4JError:找不到py4j jar錯誤。

%從pypmml python導入模型modelb = Model.fromFile (/ dbfs / shyam / DecisionTreeIris.pmml)錯誤:Py4JError:找不到py4j jar

導致

這個錯誤發生由於依賴默認Py4J圖書館。

  • 磚運行時5.0 - -6.6使用Py4J 0.10.7。
  • 磚運行時7.0及以上使用Py4J 0.10.9。

默認Py4J庫安裝到另一個位置比標準Py4J包。因此,當PyPMML試圖調用Py4J從默認路徑,它失敗了。

解決方案

設置一個集群級init腳本所需的Py4J jar文件複製到期望的位置。

  1. 使用pip安裝的版本Py4J對應於您的磚運行時版本。
    例如,在磚6.5運行時的運行pip安裝py4j = = < 0.10.7 >在安裝一個筆記本Py4J 0.10.7集群。
  2. 運行找到/磚/ - name“py4j * jar”在一個筆記本確認Py4J jar文件的完整路徑。它通常位於一個路徑相似/磚/ python3 /分享/ py4j /
  3. 手動複製的Py4J jar文件安裝路徑DBFS路徑/ dbfs / py4j /
  4. 運行以下代碼片段在Python筆記本創建install-py4j-jar.shinit腳本。確保版本號Py4J片段中列出對應於您的磚運行時版本。
    % python dbutils.fs.put(" /磚/ init腳本/ install-py4j-jar。sh”、“”“# !/bin/bash回聲“日期”複製mkdir - p /分享/ py4j / /當前版本/ cp / dbfs / py4j py4j <版本號>。jar /分享/ py4j / cp / dbfs / py4j py4j <版本號>。jar /當前版本/ echo”複製完成日期”“””,真的)
  5. 附加install-py4j-jar.shinit腳本集群,在配置集群級指令後,init腳本(AWS|Azure|GCP)。
  6. 重新啟動集群。
  7. 驗證PyPMML是否按預期運行。