Python-bibliotheken binnen Notebook

Met notebook-scoped bibliotheken kunt u aangepaste Python-omgevingen maken, wijzigen, opslaan, opnieuw gebruiken en delen die specifiek zijn voor een notebook. Wanneer u een notebookbibliotheek installeert, hebben alleen het huidige notebook en alle taken die aan dat notebook zijn gekoppeld toegang tot die bibliotheek. Andere notebooks die aan hetzelfde cluster zijn gekoppeld, worden niet beïnvloed.

Notebook-scoped bibliotheken blijven niet bestaan tussen sessies. U moet bibliotheken met notebookbereik opnieuw installeren aan het begin van elke sessie of wanneer het notebook is losgekoppeld van een cluster.

Er zijn twee methoden voor het installeren van bibliotheken met notebookbereik:

  • Voer de %pip magic-opdracht uit in een notebook. De opdracht wordt ondersteund op Databricks Runtime 7.1 en hoger en op %pip Databricks Runtime 6.4 ML en hoger. Databricks raadt aan deze benadering te gebruiken voor nieuwe workloads. In dit artikel wordt beschreven hoe u deze magic-opdrachten gebruikt.
  • Gebruik het hulpprogramma Azure Databricks bibliotheek. Het bibliotheekprogramma wordt alleen ondersteund op Databricks Runtime, niet Databricks Runtime ML of Databricks Runtime voor Genomics. Zie Bibliotheekprogramma (dbutils.library).

Als u bibliotheken wilt installeren voor alle notebooks die zijn gekoppeld aan een cluster, gebruikt u werkruimte- of clusterbibliotheken.

Vereisten

Notebook-scoped bibliotheken die gebruikmaken van Magic-opdrachten zijn standaard ingeschakeld in Databricks Runtime 7.1 en hoger, Databricks Runtime 7.1 ML en hoger en Databricks Runtime 7.1 voor Genomics en hoger.

Ze zijn ook beschikbaar met behulp van een configuratie-instelling in Databricks Runtime 6.4 ML tot 7.0 ML en Databricks Runtime 6.4 voor Genomics tot Databricks Runtime 7.0 voor Genomics. Stel de Spark-configuratie in op true .

Op een cluster met hoge gelijktijdigheid met Databricks Runtime 7.4 ML of Databricks Runtime 7.4 voor Genomics of lager zijn notebook-scoped bibliotheken niet compatibel met toegangsbeheer voor tabel of referentiepassthrough. Een alternatief is het gebruik van het bibliotheekprogramma (dbutils.library) op een Databricks Runtime-cluster of om uw cluster te upgraden naar Databricks Runtime 7.5 ML of Databricks Runtime 7.5 voor Genomics of hoger.

Als u notebook-scoped bibliotheken wilt gebruiken met Databricks Verbinding maken,moet u het hulpprogramma Bibliotheek (dbutils.library) gebruiken.

Knooppunt stuurprogramma

Het gebruik van bibliotheken met notebookbereik kan leiden tot meer verkeer naar het stuurprogrammaknooppunt omdat het werkt om de omgeving consistent te houden tussen uitvoerknooppunten.

Wanneer u een cluster met 10 of meer knooppunten gebruikt, raadt Databricks deze specificaties aan als een minimale vereiste voor het stuurprogrammaknooppunt:

  • Gebruik voor een CPU-cluster met 100 knooppunt Standard_DS5_v2.
  • Gebruik voor een GPU-cluster met 10 knooppunt Standard_NC12.

Gebruik voor grotere clusters een groter stuurprogramma-knooppunt.

Notebook-scoped bibliotheken installeren met %pip

Belangrijk

  • U moet alle %pip opdrachten aan het begin van het notebook plaatsen. De notebook-status wordt opnieuw ingesteld na %pip een opdracht die de omgeving wijzigt. Als u Python-methoden of -variabelen in een notebook maakt en vervolgens opdrachten in een latere cel gebruikt, gaan de methoden of %pip variabelen verloren.
  • Het upgraden, wijzigen of verwijderen van Python-kernpakketten (zoals IPython) met kan ertoe leiden dat sommige functies niet meer %pip werken zoals verwacht. IPython 7.21 en hoger is bijvoorbeeld niet compatibel met Databricks Runtime 8.1 en lager. Als u dergelijke problemen ervaart, stelt u de omgeving opnieuw in door het notebook los te koppelen en opnieuw te koppelen of door het cluster opnieuw op te starten.

Bibliotheken beheren met %pip opdrachten

De %pip opdracht is gelijk aan de %pip en ondersteunt dezelfde API. In de volgende secties ziet u voorbeelden van hoe u opdrachten %pip kunt gebruiken om uw omgeving te beheren. Zie de pip-installatiedocumentatie en verwante pagina's voor meer informatie over het installeren van pip Python-pakketten pip met .

In deze sectie:

Een bibliotheek installeren met %pip

%pip install matplotlib

Een wheel-pakket installeren met %pip

%pip install /path/to/my_package.whl

Een bibliotheek verwijderen met %pip

Notitie

U kunt een bibliotheek die is opgenomen in Databricks Runtime of een bibliotheek die is geïnstalleerd als een clusterbibliotheek niet verwijderen. Als u een andere bibliotheekversie hebt geïnstalleerd dan de versie die is opgenomen in Databricks Runtime of de versie die in het cluster is geïnstalleerd, kunt u gebruiken om de bibliotheek terug te keren naar de standaardversie in Databricks Runtime of de versie die is geïnstalleerd op het cluster, maar u kunt geen opdracht gebruiken om de versie van een bibliotheek die is opgenomen in Databricks Runtime of geïnstalleerd op het cluster te %pip uninstall%pip verwijderen.

%pip uninstall -y matplotlib

De -y optie is vereist.

Een bibliotheek installeren vanaf een versiebeheersysteem met %pip

%pip install git+https://github.com/databricks/databricks-cli

U kunt parameters toevoegen aan de URL om zaken zoals de versie of git-subdirectory op te geven. Zie de VCS-ondersteuning voor meer informatie en voor voorbeelden van het gebruik van andere versiebeheersystemen.

Een privépakket installeren met referenties die worden beheerd door Databricks-geheimen met %pip

Pip ondersteunt het installeren van pakketten uit privébronnen met basisverificatie ,met inbegrip van persoonlijke versiebeheersystemen en opslagplaatsen met persoonlijke pakketten, zoals Nexusen Artifactory. Geheimbeheer is beschikbaar via de Databricks Secrets-API, waarmee u verificatietokens en wachtwoorden kunt opslaan. Gebruik de DBUtils-API voor toegang tot geheimen vanuit uw notebook. Houd er rekening mee dat u $variables kunt gebruiken in magic-opdrachten.

Als u een pakket wilt installeren vanuit een privéopslagplaats, geeft u de URL van de opslagplaats op met de optie om het toe te voegen aan of toe te voegen aan --index-url%pip install het pip configuratiebestand op ~/.pip/pip.conf .

token = dbutils.secrets.get(scope="scope", key="key")
%pip install --index-url https://<user>:$token@<your-package-repository>.com/<path/to/repo> <package>==<version> --extra-index-url https://pypi.org/simple/

Op dezelfde manier kunt u geheimbeheer gebruiken met magic-opdrachten om privépakketten van versiebeheersystemen te installeren.

token = dbutils.secrets.get(scope="scope", key="key")
%pip install git+https://<user>:$token@<gitprovider>.com/<path/to/repo>

Een pakket van DBFS installeren met %pip

U kunt gebruiken %pip om een privépakket te installeren dat is opgeslagen op DBFS.

Wanneer u een bestand uploadt naar DBFS, wordt de naam van het bestand automatisch gewijzigd, en worden spaties, punten en afbreekstreepen vervangen door onderstrepingstekens. pip vereist dat de naam van het wheel-bestand perioden gebruikt in de versie (bijvoorbeeld 0.1.0) en afbreekstreepingstekens in plaats van spaties of onderstrepingstekens. Als u het pakket wilt installeren met %pip een opdracht, moet u de %pip deze vereisten te voldoen.

%pip install /dbfs/mypackage-0.0.1-py3-none-any.whl

Bibliotheken opslaan in een vereistenbestand

%pip freeze > /dbfs/requirements.txt

Alle subdirecties in het bestandspad moeten al bestaan. Als u %pip freeze > /dbfs/<new-directory>/requirements.txt uitgeeft, mislukt de opdracht als de map nog niet /dbfs/<new-directory> bestaat.

Een bestand met vereisten gebruiken om bibliotheken te installeren

Een vereistenbestand bevat een lijst met pakketten die moeten worden geïnstalleerd met . Een voorbeeld van het gebruik van een bestand met vereisten is:

%pip install -r /dbfs/requirements.txt

Zie Bestandsindeling van vereisten voor meer informatie over bestanden.

Bibliotheken beheren met %conda opdrachten

Belangrijk

%conda-opdrachten zijn afgeschaft en worden niet meer ondersteund na Databricks Runtime ML 8.4. Databricks raadt aan om te %pip gebruiken voor het beheren van bibliotheken met notebookbereik. Als u Python-bibliotheken nodig hebt die alleen kunnen worden geïnstalleerd met conda, kunt u op Conda gebaseerde Docker-containers gebruiken om vooraf de bibliotheken te installeren die u nodig hebt.

Anaconda Inc. heeft de servicevoorwaarden voor anaconda.org-kanalen in september 2020 bijgewerkt. Op basis van de nieuwe servicevoorwaarden hebt u mogelijk een commerciële licentie nodig als u afhankelijk bent van de verpakking en distributie van Anaconda. Zie Veelgestelde vragen over Anaconda Commercial Edition voor meer informatie. Uw gebruik van Anaconda-kanalen is onderworpen aan de servicevoorwaarden.

Als gevolg van deze wijziging heeft Databricks de standaardkanaalconfiguratie voor conda-pakketbeheer verwijderd in Databricks Runtime ML 8.0. Als u pakketten wilt installeren of bijwerken met behulp van %conda de opdracht , moet u een kanaal opgeven.

Standaard Anaconda-kanalen worden verwijderd uit alle Databricks Runtime versies op of na 25 mei 2021. Dit is een wijziging die een grote wijziging doorbreekt. U moet al het gebruik van en %conda install bijwerken om een kanaal op te %sh conda install geven.

De %conda opdracht is gelijk aan de %conda en ondersteunt dezelfde API met enkele beperkingen die hieronder worden vermeld. De volgende secties bevatten voorbeelden van het gebruik van %conda opdrachten voor het beheren van uw omgeving. Zie de conda-installatiedocumentatie voor meer informatie over het installeren van condaconda.

%condaMagic-opdrachten zijn niet beschikbaar op Databricks Runtime. Ze zijn alleen beschikbaar op Databricks Runtime ML tot Databricks Runtime ML 8.4 en op Databricks Runtime voor Genomics. Databricks raadt aan om te gebruiken pip om bibliotheken te installeren. Zie Understanding conda and pip (Informatie over conda en pip) voor meer informatie.

Als u zowel - als %pip%conda -opdrachten in een notebook moet gebruiken, zie %pip

Notitie

De volgende conda opdrachten worden niet ondersteund bij gebruik met %conda :

  • activate
  • create
  • init
  • run
  • env create
  • env remove

In deze sectie:

Een bibliotheek installeren met %conda

%conda install matplotlib -c conda-forge

Een bibliotheek verwijderen met %conda

%conda uninstall matplotlib

Een omgeving opslaan en opnieuw gebruiken of delen

Wanneer u een notebook loskoppelt van een cluster, wordt de omgeving niet opgeslagen. Volg deze stappen om een omgeving op te slaan zodat u deze later opnieuw kunt gebruiken of met iemand anders kunt delen.

Databricks raadt aan omgevingen alleen te delen tussen clusters met dezelfde versie van Databricks Runtime ML of dezelfde versie van Databricks Runtime voor Genomics.

  1. Sla de omgeving op als conda YAML-specificatie.

    %conda env export -f /dbfs/myenv.yml
    
  2. Importeer het bestand in een ander notebook met behulp van conda env update .

    %conda env update -f /dbfs/myenv.yml
    

De Python-omgeving van een notebook

Gebruik om de Python-omgeving weer te geven die is gekoppeld aan een %conda list notebook:

%conda list

Interacties tussen pip - en conda -opdrachten

Als u conflicten wilt voorkomen, volgt u deze richtlijnen wanneer u pipconda Python-pakketten en -bibliotheken gebruikt of installeert.

  • Bibliotheken die zijn geïnstalleerd met behulp van de API of de gebruikersinterface van het cluster, worden geïnstalleerd met behulp van . Als er bibliotheken zijn geïnstalleerd vanuit de API of de gebruikersinterface van het cluster, moet u alleen opdrachten gebruiken bij het installeren %pip van bibliotheken met notebookbereik.
  • Als u notebookbibliotheken op een cluster gebruikt, kunnen init-scripts die op dat cluster worden uitgevoerd, of opdrachten gebruiken om condapip bibliotheken te installeren. Als het init-script echter opdrachten pip bevat, gebruikt u alleen %pip opdrachten in notebooks (niet %conda ).
  • Het is het beste om opdrachten pip uitsluitend of uitsluitend opdrachten te conda gebruiken. Als u sommige pakketten moet installeren met en sommige met , voert u eerst de opdrachten conda uit en voert u vervolgens de opdrachten pipcondapip uit. Zie Using Pip in a Conda Environment (Pip gebruiken in een Conda-omgeving) voor meer informatie.

Veelgestelde vragen

Hoe communiceren bibliotheken die zijn geïnstalleerd vanuit de gebruikersinterface/API van het cluster met notebook-scoped bibliotheken?

Bibliotheken die zijn geïnstalleerd vanuit de gebruikersinterface of API van het cluster, zijn beschikbaar voor alle notebooks in het cluster. Deze bibliotheken worden geïnstalleerd met behulp van . Als er bibliotheken worden geïnstalleerd met behulp van de gebruikersinterface van het cluster, gebruikt pip u daarom alleen opdrachten in %pip notebooks.

Hoe werken bibliotheken die zijn geïnstalleerd met behulp van een init-script met notebook-scoped bibliotheken?

Bibliotheken die zijn geïnstalleerd met behulp van een init-script, zijn beschikbaar voor alle notebooks in het cluster.

Als u notebookbibliotheken gebruikt op een cluster met Databricks Runtime ML of Databricks Runtime voor Genomics, kunnen init-scripts die op het cluster worden uitgevoerd, of opdrachten gebruiken om bibliotheken te condapip installeren. Als het init-script echter opdrachten pip bevat, gebruikt u alleen %pip opdrachten in notebooks.

Met dit notebookcodefragment wordt bijvoorbeeld een script gegenereerd dat fast.ai op alle clusterknooppunten installeert.

dbutils.fs.put("dbfs:/home/myScripts/fast.ai", "conda install -c pytorch -c fastai fastai -y", True)

Kan ik opdrachten %pip en %conda gebruiken in taaknote notebooks?

Ja.

Kan ik opdrachten %pip en %conda gebruiken in R- of Scala-notebooks?

Ja, in een Python-magic-cel.

Kan ik %sh pip of %sh conda gebruiken?

Databricks raadt het gebruik niet %sh pip aan omdat het niet compatibel is met %pip gebruik.

Kan ik R-pakketten bijwerken met behulp van %conda opdrachten?

Nee.

Bekende problemen

  • Op Databricks Runtime 7.0 ML en lager, evenals Databricks Runtime 7.0 voor Genomics en lager, werkt een geregistreerde UDF niet in cellen als een geregistreerde UDF afhankelijk is van Python-pakketten die zijn geïnstalleerd met of %pip%conda%sql . Gebruik spark.sql in plaats daarvan in een Python-opdrachtshell.
  • Wanneer u op Databricks Runtime 7.2 ML en lager en Databricks Runtime 7.2 voor Genomics en lager de notebookomgeving bijwerkt met , wordt de nieuwe omgeving niet geactiveerd voor Python-werkprocessen. %conda Dit kan problemen veroorzaken als een PySpark UDF-functie een functie van derden aanroept die gebruikmaakt van resources die zijn geïnstalleerd in de Conda-omgeving.
  • Wanneer u gebruikt %conda env update om een notebookomgeving bij te werken, wordt de installatieorder van pakketten niet gegarandeerd. Dit kan problemen veroorzaken voor het pakket, waarvoor dit vereist is en vóór moet worden geïnstalleerd horovod om respectievelijk of te kunnen tensorflowtorchhorovodhorovod.tensorflowhorovod.torch gebruiken. Als dit gebeurt, verwijdert u het pakket en installeert u het opnieuw nadat u ervoor hebt gezorgd dat horovod de afhankelijkheden zijn geïnstalleerd.