Import modulů Pythonu ze složek Gitu nebo souborů pracovního prostoru

Kód Pythonu můžete uložit do složek Gitu Databricks nebo do souborů pracovního prostoru a pak tento kód Pythonu importovat do kanálu. Další informace o práci s moduly ve složkách Gitu nebo souborech pracovních prostorů najdete v tématu Práce s moduly Pythonu a R.

Pokud chcete importovat soubor Pythonu, máte několik možností:

  • Do vašeho potrubí začleňte modul Pythonu jako pomocný soubor. To funguje nejlépe, pokud je modul specifický pro kanál.
  • Přidejte sdílený modul do vašeho prostředí kanálu v libovolném kanálu, který ho potřebuje použít.
  • Importujte modul do pracovního prostoru přímo do zdroje Pythonu import pomocí příkazu.

Zahrnutí modulu Pythonu do potrubí

Python modul můžete vytvořit jako součást pipeliny. Kořenová složka pipeline se automaticky připojí do sys.path složky. To vám umožní odkazovat na modul přímo ve zdrojovém kódu Pythonu pipeline.

Následující příklad ukazuje vytvoření modulu Pythonu v kořenové složce kanálu a odkazování na něj ze zdrojového souboru Pythonu ve zdroji kanálu:

  1. Otevřete kanál v editoru kanálů.

  2. V prohlížeči prostředků kanálu vlevo klikněte na ikonu Plus.Přidejte a pak v nabídce zvolte Nástroj .

  3. Zadejte my_utils.pynázev.

  4. Ponechte výchozí cestu a klikněte na Vytvořit.

    Vytvoří tím soubor my_utils.py ve složce utilities vašeho kanálu a vytvoří složku utilities, pokud neexistuje. Soubory v této složce nejsou ve výchozím nastavení přidány do zdroje kanálu, ale jsou k dispozici pro zavolání ze .py souborů, které jsou součástí vašeho zdrojového kódu.

    Ve výchozím nastavení má soubor nástroje ukázkovou funkci s názvem distance_km(), která bere vzdálenost v mílích a převádí ji.

  5. Ve zdrojovém souboru Pythonu ve složce transformací (můžete ho vytvořit výběrem ikony Plus.Přidejte a pak v nabídce vyberte Transformovat ), přidejte následující kód:

    from utilities import my_utils
    

Nyní můžete volat funkce v my_utils z toho souboru v Pythonu. Příkaz musíte přidat z libovolného import souboru Pythonu, který potřebuje volat funkce v modulu.

Přidejte modul Pythonu do svého pipeline prostředí.

Pokud chcete sdílet modul Pythonu napříč několika kanály, můžete ho uložit kamkoli do souborů pracovního prostoru a odkazovat na něj z prostředí libovolného kanálu, který ho potřebuje použít. Můžete odkazovat na moduly Pythonu, které jsou:

  • Jednotlivé soubory jazyka Python .py
  • Projekt Pythonu zabalený jako soubor kolečka Pythonu (.whl).
  • Rozbalený projekt Pythonu se souborem pyproject.toml (pro definování názvu a verze projektu)

Následující příklad ukazuje, jak přidat závislost do sestavy.

  1. Otevřete kanál v editoru kanálů.

  2. Klikněte na ikonu ozubeného kola.Nastavení v horním panelu.

  3. V nastavení kanálu v části Prostředí kanálu klikněte na ikonu Tužka.Upravte prostředí.

  4. Přidejte závislost. Například pro přidání souboru do pracovního prostoru můžete přidat /Volumes/libraries/path/to/python_files/file.py. Pro kolo Pythonu uložené ve složkách Gitu může vaše cesta vypadat nějak takto /Workspace/libraries/path/to/wheel_files/file.whl.

    Pokud se soubor nachází v kořenové složce potrubí, můžete jej přidat bez uvedení cesty nebo s relativní cestou.

Poznámka:

Můžete také přidat cestu ke sdílené složce pomocí závislostí, které umožňují import příkazy v kódu najít moduly, které chcete importovat. Například: -e /Workspace/Users/<user_name>/path/to/add/.

Import modulu Pythonu pomocí příkazu import

Můžete také přímo odkazovat na soubor pracovního prostoru ve zdrojovém kódu Pythonu.

  • Pokud je soubor ve utilities složce kanálu, můžete na něj odkazovat bez cesty:

    from utilities import my_module
    
  • Pokud je soubor kdekoli jinde, můžete ho importovat tak, že nejprve připojíte cestu modulu k sys.path:

    import sys, os
    sys.path.append(os.path.abspath('<module-path>'))
    
    from my_module import *
    
  • Ke všem zdrojovým souborům kanálu se také můžete připojit sys.path přidáním cesty k prostředí kanálu, jak je popsáno v předchozí části.

Příklad importu dotazů jako modulů Pythonu

Následující příklad ukazuje, jak importovat dotazy na datovou sadu ve formě modulů programu Python ze souborů pracovního prostředí. Ačkoli tento příklad popisuje použití souborů pracovního prostoru pro uložení zdrojového kódu pipeline, můžete tento postup použít se zdrojovým kódem uloženým ve složce Git.

Pokud chcete spustit tento příklad, použijte následující kroky:

  1. Klikněte na ikonu Pracovní prostory.Pracovní prostor na bočním panelu pracovního prostoru Azure Databricks otevřete prohlížeč pracovního prostoru.

  2. Pomocí prohlížeče pracovního prostoru vyberte adresář pro moduly Pythonu.

  3. Klikněte na ikonu nabídky Kebab. Ve sloupci úplně vpravo ve vybraném adresáři a klikněte na Vytvořit > soubor.

  4. Zadejte název souboru, například clickstream_raw_module.py. Otevře se editor souborů. Pokud chcete vytvořit modul pro čtení zdrojových dat do tabulky, zadejte do okna editoru následující:

    from pyspark import pipelines as dp
    
    json_path = "/databricks-datasets/wikipedia-datasets/data-001/clickstream/raw-uncompressed-json/2015_2_clickstream.json"
    
    def create_clickstream_raw_table(spark):
      @dp.table
      def clickstream_raw():
        return (
          spark.read.json(json_path)
        )
    
  5. Pokud chcete vytvořit modul, který vytvoří novou tabulku obsahující připravená data, vytvořte nový soubor ve stejném adresáři, zadejte název souboru, například clickstream_prepared_module.pya do nového okna editoru zadejte následující:

    from clickstream_raw_module import *
    from pyspark import pipelines as dp
    from pyspark.sql.functions import *
    from pyspark.sql.types import *
    
    def create_clickstream_prepared_table(spark):
      create_clickstream_raw_table(spark)
      @dp.table
      @dp.expect("valid_current_page_title", "current_page_title IS NOT NULL")
      @dp.expect_or_fail("valid_count", "click_count > 0")
      def clickstream_prepared():
        return (
          spark.read("clickstream_raw")
            .withColumn("click_count", expr("CAST(n AS INT)"))
            .withColumnRenamed("curr_title", "current_page_title")
            .withColumnRenamed("prev_title", "previous_page_title")
            .select("current_page_title", "click_count", "previous_page_title")
        )
    
  6. Dále ve zdroji kanálu vytvořte soubor Pythonu. V editoru kanálů zvolte ikonu Plus.Přidejte a pak transformujte.

  7. Pojmenujte soubor a potvrďte, že Python je výchozím jazykem.

  8. Klikněte na Vytvořit.

  9. Do poznámkového bloku zadejte následující ukázkový kód.

    Poznámka:

    Pokud váš poznámkový blok importuje moduly nebo balíčky z cesty k souborům pracovního prostoru nebo z cesty ke složkám Git, které se liší od adresáře poznámkového bloku, musíte ručně připojit cestu k souborům pomocí sys.path.append().

    Pokud importujete soubor ze složky Git, musíte předřadit /Workspace/ k cestě. Například: sys.path.append('/Workspace/...'). Vynechání /Workspace/ z cesty způsobí chybu.

    Pokud jsou moduly nebo balíčky uložené ve stejném adresáři jako poznámkový blok, nemusíte cestu připojovat ručně. Při importu z kořenového adresáře složky Git také nemusíte cestu přidávat ručně, protože kořenový adresář se k cestě automaticky připojí.

    import sys, os
    sys.path.append(os.path.abspath('<module-path>'))
    
    from pyspark import pipelines as dp
    from clickstream_prepared_module import *
    from pyspark.sql.functions import *
    from pyspark.sql.types import *
    
    create_clickstream_prepared_table(spark)
    
    @dp.table(
      comment="A table containing the top pages linking to the Apache Spark page."
    )
    def top_spark_referrers():
      return (
        spark.read.table("catalog_name.schema_name.clickstream_prepared")
          .filter(expr("current_page_title == 'Apache_Spark'"))
          .withColumnRenamed("previous_page_title", "referrer")
          .sort(desc("click_count"))
          .select("referrer", "click_count")
          .limit(10)
      )
    

    Nahraďte <module-path> cestou k adresáři obsahujícímu moduly Pythonu, které se mají importovat.

  10. Pokud chcete kanál spustit, klikněte na Spustit kanál.