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
I antecknings boken kontrollerar du versionen
thrift
och uppgraderar till den senaste versionen.%sh pip list | egrep 'thrift-sasl|sasl' pip install --upgrade thrift
Se till att de beroende paketen är installerade.
%sh dpkg -l | egrep 'thrift_sasl|libsasl2-dev|gcc|python-dev'
Installera
nnixodbc
innan du installerarpyodbc
.%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.
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>/")
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)
Kontrol lera att skriptet finns.
display(dbutils.fs.ls("dbfs:/databricks/<directory>/tornado.sh"))
På sidan kluster konfiguration klickar du på knappen Avancerade alternativ växla.
Klicka på fliken init-skript längst ned på sidan.
I list rutan mål väljer du DBFS, anger fil Sök vägen till skriptet och klickar på Lägg till.
Starta om klustret
Mer information om initierings skript med kluster omfång finns i kluster omfång init-skript.