Klustret avbryter python-kommando körningen på grund av en biblioteks konflikt

Problem

Klustret returnerar Cancelled i en python-anteckningsbok. Antecknings böcker på alla andra språk körs på samma kluster.

Orsak

När du installerar en version av ett bibliotek som är i konflikt med varandra, till exempel,,, ipython ipywidgets numpy scipy eller pandas till PYTHONPATH , kan python-repl brytas, vilket gör att alla kommandon returnerar Cancelled efter 30 sekunder. Detta bryter även mot% sh, det makro som du kan använda för att ange skal skript i python Notebook-celler.

Anteckning

Lösning

Lös problemet genom att göra följande:

  1. Identifiera bibliotek som är i konflikt och avinstallera den.
  2. Installera rätt version av biblioteket i en bärbar dator eller med ett initierings skript med kluster omfång.

Identifiera biblioteket som är i konflikt

  1. Avinstallera varje bibliotek en i taget och kontrol lera om python-REPL fortfarande bryts.
  2. Om REPL fortfarande bryts installerar du om biblioteket som du tog bort och tar bort nästa.
  3. När du hittar biblioteket som gör att REPL avbryts installerar du rätt version av biblioteket med hjälp av någon av de två metoderna nedan.

Du kan också granska driv rutins loggen ( std.err ) för klustret (på sidan kluster konfiguration) för stack spårning och fel meddelande som kan hjälpa dig att identifiera biblioteks konflikten.

Installera rätt bibliotek

Gör något av följande.

Alternativ 1: installera i en bärbar dator med PIP3

%sh sudo apt-get -y install python3-pip
  pip3 install <library-name>

Alternativ 2: installera med ett kluster omfång init-skript

Följ stegen nedan för att skapa ett initierings skript med kluster omfång som installerar rätt version av biblioteket. Ersätt <library-name> i exemplen med fil namnet för det bibliotek som ska installeras.

  1. Om initierings skriptet inte redan finns skapar du en bas katalog för att lagra den:

    dbutils.fs.mkdirs("dbfs:/databricks/<directory>/")
    
  2. Skapa följande skript:

    dbutils.fs.put("/databricks/init/cluster-name/<library-name>.sh","""
     #!/bin/bash
     sudo apt-get -y install python3-pip
     sudo pip3 install <library-name>
     """, True)
    
  3. Bekräfta att skriptet finns:

    display(dbutils.fs.ls("dbfs:/databricks/<directory>/<library-name>.sh"))
    
  4. Gå till sidan kluster konfiguration och klicka på alternativet för att växla Avancerade alternativ .

  5. Klicka på fliken init-skript längst ned på sidan:

    ingen alternativ text

  6. I list rutan mål väljer du DBFS, anger fil Sök vägen till skriptet och klickar på Lägg till.

  7. Starta om klustret.