PyPMML misslyckas med Could not find py4j jar fel

Problem

PyPMML är ett PMML-bedömnings bibliotek.

När du har installerat PyPMML i ett Azure Databricks-kluster Miss lyckas det med ett Py4JError: Could not find py4j jar fel.

from pypmml import Model
modelb = Model.fromFile('/dbfs/shyam/DecisionTreeIris.pmml')

Error : Py4JError: Could not find py4j jar at

Orsak

Det här felet uppstår på grund av ett beroende av standard biblioteket för Py4J.

  • Databricks Runtime 5.0 – 6.6 använder Py4J 0.10.7.
  • Databricks Runtime 7,0 och senare använder Py4J 0.10.9.

Standard biblioteket för Py4J installeras på en annan plats än ett standard-Py4J-paket. Det innebär att när PyPMML försöker anropa Py4J från standard Sök vägen, Miss lyckas det.

Lösning

Konfigurera ett initierings skript med kluster omfång som kopierar den nödvändiga Py4J jar-filen till den förväntade platsen.

  1. Använd pip för att installera den version av Py4J som motsvarar din Databricks Runtime version.

    Till exempel, i Databricks Runtime 6,5 körs pip install py4j==<0.10.7> i en bärbar dator i installera Py4J 0.10.7 på klustret.

  2. Kör find /databricks/ -name "py4j*jar" i en bärbar dator för att bekräfta den fullständiga sökvägen till jar-filen för Py4J. Den finns vanligt vis i en sökväg som liknar /databricks/python3/share/py4j/ .

  3. Kopiera Py4J jar-filen manuellt från installations Sök vägen till DBFS-sökvägen /dbfs/py4j/ .

  4. Kör följande kodfragment i en python-anteckningsbok för att skapa install-py4j-jar.sh init-skriptet. Kontrol lera att versions numret för Py4J som visas i kodfragmentet motsvarar din Databricks Runtime version.

    dbutils.fs.put("/databricks/init-scripts/install-py4j-jar.sh", """
    
    #!/bin/bash
    echo "Copying at `date`"
    mkdir -p /share/py4j/ /current-release/
    cp /dbfs/py4j/py4j<version number>.jar /share/py4j/
    cp /dbfs/py4j/py4j<version number>.jar /current-release/
    echo "Copying completed at `date`"
    
    """, True)
    
  5. Koppla install-py4j-jar.sh initierings skriptet till klustret genom att följa anvisningarna i Konfigurera ett initierings skript med kluster omfång.

  6. Starta om klustret.

  7. Kontrol lera att PyPMML fungerar som förväntat.