Fel vid installation av pyodbc i ett kluster

Problem

Ett av följande fel inträffar när du använder pip för att installera pyodbc biblioteket.

java.lang.RuntimeException: Installation failed with message: Collecting pyodbc
"Library installation is failing due to missing dependencies. sasl and thrift_sasl are optional dependencies for SASL or Kerberos support"

Orsak

Även sasl om thrift_sasl det finns valfria beroenden för sasl-eller Kerberos-stöd måste de vara tillgängliga för pyodbc att installationen ska lyckas.

Lösning

Konfigurera lösning i en enda bärbar dator

  1. I antecknings boken kontrollerar du versionen thrift och uppgraderar till den senaste versionen.

    %sh
    pip list | egrep 'thrift-sasl|sasl'
    pip install --upgrade thrift
    
  2. Se till att de beroende paketen är installerade.

    %sh dpkg -l | egrep 'thrift_sasl|libsasl2-dev|gcc|python-dev'
    
  3. Installera nnixodbc innan du installerar pyodbc .

    %sh sudo apt-get -y install unixodbc-dev libsasl2-dev gcc python-dev
    

Konfigurera lösning som ett initierings skript med kluster omfång

Du kan lägga till dessa kommandon i ett enda init-skript och koppla det till klustret. Detta säkerställer att beroende bibliotek för pyodbc installeras innan klustret startas.

  1. Skapa bas katalogen för att lagra init-skriptet i, om bas katalogen inte finns. Här använder du dbfs:/databricks/<directory> som exempel.

    dbutils.fs.mkdirs("dbfs:/databricks/<directory>/")
    
  2. Skapa skriptet och spara det i en fil.

    dbutils.fs.put("dbfs:/databricks/<directory>/tornado.sh","""
    #!/bin/bash
    pip list | egrep 'thrift-sasl|sasl'
    pip install --upgrade thrift
    dpkg -l | egrep 'thrift_sasl|libsasl2-dev|gcc|python-dev'
    sudo apt-get -y install unixodbc-dev libsasl2-dev gcc python-dev
    """,True)
    
  3. Kontrol lera att skriptet finns.

    display(dbutils.fs.ls("dbfs:/databricks/<directory>/tornado.sh"))
    
  4. På sidan kluster konfiguration klickar du på knappen Avancerade alternativ växla.

  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

Mer information om initierings skript med kluster omfång finns i kluster omfång init-skript.