Sdílet prostřednictvím


Umíte používat knihovnu pandas v Azure Databricks?

Databricks Runtime obsahuje pandas jako jeden ze standardních balíčků Pythonu, což umožňuje vytvářet a využívat pandas DataFrames v poznámkových blocích a úlohách Databricks.

V Databricks Runtime 10.4 LTS a novějším poskytuje rozhraní Pandas API ve Sparku známé příkazy pandas nad datovými rámci PySpark. Můžete také převádět datové rámce mezi pandas a PySpark.

Apache Spark zahrnuje provádění logiky Pythonu optimalizované pomocí šipky ve formě rozhraní API funkcí pandas, která uživatelům umožňuje aplikovat transformace pandas přímo na datové rámce PySpark. Apache Spark také podporuje uživatelem definované funkce pandas, které používají podobné optimalizace šipky pro libovolné uživatelské funkce definované v Pythonu.

Kde pandas ukládá data v Azure Databricks?

Knihovnu pandas můžete použít k ukládání dat v mnoha různých umístěních v Azure Databricks. Vaše schopnost ukládat a načítat data z některých umístění závisí na konfiguracích, které nastavují správci pracovního prostoru.

Poznámka:

Databricks doporučuje ukládat produkční data do cloudového úložiště objektů. Viz Připojení ke službě Azure Data Lake Storage Gen2 a Blob Storage.

Pokud jste v pracovním prostoru s podporou katalogu Unity, můžete přistupovat ke cloudovému úložišti s externími umístěními. Viz Vytvoření externího umístění pro připojení cloudového úložiště k Azure Databricks.

Pro rychlé zkoumání a data bez citlivých informací můžete bezpečně ukládat data pomocí relativních cest nebo dbFS, jako v následujících příkladech:

import pandas as pd

df = pd.DataFrame([["a", 1], ["b", 2], ["c", 3]])

df.to_csv("./relative_path_test.csv")
df.to_csv("/dbfs/dbfs_test.csv")

Soubory zapsané do systému souborů DBFS můžete prozkoumat pomocí %fs příkazu magic, jak je znázorněno v následujícím příkladu. Všimněte si, že /dbfs adresář je kořenovou cestou pro tyto příkazy.

%fs ls

Při uložení do relativní cesty závisí umístění souboru na tom, kde kód spouštíte. Pokud používáte poznámkový blok Databricks, uloží se váš datový soubor do úložiště svazku připojeného k ovladači clusteru. Data uložená v tomto umístění se po ukončení clusteru trvale odstraní. Pokud používáte složky Git Databricks s povolenou podporou libovolných souborů, vaše data se uloží do kořenového adresáře aktuálního projektu. V obou případech můžete prozkoumat soubory napsané pomocí %sh příkazu magic, který umožňuje jednoduché operace Bash vzhledem k aktuálnímu kořenovému adresáři, jako v následujícím příkladu:

%sh ls

Další informace o tom, jak Azure Databricks ukládá různé soubory, najdete v tématu Práce se soubory v Azure Databricks.

Jak je možné načítat data pomocí knihovny pandas v Azure Databricks?

Azure Databricks nabízí řadu možností, jak usnadnit nahrávání dat do pracovního prostoru pro zkoumání. Upřednostňovaná metoda načítání dat pomocí knihovny pandas se liší v závislosti na tom, jak načítáte data do pracovního prostoru.

Pokud máte malé datové soubory uložené společně s poznámkovými bloky na místním počítači, můžete data a kód nahrát společně se složkami Gitu. K načtení datových souborů pak můžete použít relativní cesty.

Azure Databricks poskytuje rozsáhlé možnosti na základě uživatelského rozhraní pro načítání dat. Většina těchto možností ukládá data jako tabulky Delta. Tabulku Delta můžete přečíst do datového rámce Sparku a pak ji převést na datový rámec pandas.

Pokud jste datové soubory uložili pomocí DBFS nebo relativních cest, můžete tyto datové soubory znovu načíst pomocí DBFS nebo relativních cest. Následující kód obsahuje příklad:

import pandas as pd

df = pd.read_csv("./relative_path_test.csv")
df = pd.read_csv("/dbfs/dbfs_test.csv")

Data můžete načíst přímo z Azure Data Lake Storage Gen2 pomocí knihovny pandas a plně kvalifikované adresy URL. Pro přístup ke cloudovým datům musíte zadat přihlašovací údaje cloudu. Balíčky fsspec Pythonu a adlfs musí se také nainstalovat.

df = pd.read_csv(
  f"abfss://{container}@{storage_account}.dfs.core.windows.net/{file_path}",
  storage_options={
    "sas_token": sas_token_value
  }
)