Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek obsahuje příklady čtení souborů CSV pomocí Azure Databricks pomocí Pythonu, Scaly, R a SQL.
Poznámka:
Databricks doporučuje read_files funkci s hodnotou tabulky , aby uživatelé SQL mohli číst soubory CSV.
read_files je k dispozici ve službě Databricks Runtime 13.3 LTS a vyšší.
Můžete také použít dočasné zobrazení. Pokud používáte SQL k přímému čtení dat CSV bez použití dočasných zobrazení nebo read_files, platí následující omezení:
- Nemůžete zadat možnosti zdroje dat.
- Pro data nelze zadat schéma.
Možnosti
Pro zdroje dat souborů CSV můžete nakonfigurovat několik možností. Podporované možnosti čtení najdete v následujících referenčních článcích k Apache Sparku:
Tento článek se zabývá jen čtením csv, ale v následujících referenčních článcích o Apache Sparku se dozvíte o podporovaných možnostech zápisu:
Práce s poškozenými záznamy CSV
Při čtení souborů CSV se zadaným schématem je možné, že data v souborech neodpovídají schématu. Například pole obsahující název města nebude parsovat jako celé číslo. Důsledky závisí na režimu, ve kterém se analyzátor spouští:
-
PERMISSIVE(výchozí): Hodnoty null se vloží pro pole, která nelze správně analyzovat. -
DROPMALFORMED: zahodí řádky obsahující pole, která nelze analyzovat. -
FAILFAST: Přeruší čtení, pokud jsou nalezena nějaká poškozená data.
Pokud chcete nastavit režim, použijte možnost mode.
diamonds_df = (spark.read
.format("csv")
.option("mode", "PERMISSIVE")
.load("/databricks-datasets/Rdatasets/data-001/csv/ggplot2/diamonds.csv")
)
PERMISSIVE V režimu je možné zkontrolovat řádky, které nelze správně analyzovat pomocí jedné z následujících metod:
- Můžete zadat vlastní cestu k možnosti
badRecordsPathzáznamu poškozených záznamů do souboru. - Sloupec
_corrupt_recordmůžete přidat do schématu objektu DataFrameReader, abyste zkontrolovali poškozené záznamy ve výsledném dataframe.
Poznámka:
Tato badRecordsPath možnost má přednost před _corrupt_recordchybnými řádky zapsanými do zadané cesty se ve výsledném datovém rámci nezobrazí.
Výchozí chování chybně formátovaných záznamů se změní při použití záchranného datového sloupce.
Vyhledání poškozených řádků v poznámkovém bloku
zachráněný datový sloupec
Poznámka:
Tato funkce je podporovaná v Databricks Runtime 8.3 (EoS) a novějších.
Když použijete PERMISSIVE režim, můžete povolit, aby zachycovaný datový sloupec zaznamenával všechna data, která nebyla analyzována, protože jedno nebo více polí v záznamu má jeden z následujících problémů:
- Chybí ze zadaného schématu.
- Neodpovídá datovému typu zadaného schématu.
- Neshoduje se s názvy polí v zadaném schématu.
Uložený datový sloupec se vrátí jako dokument JSON obsahující sloupce, které byly uloženy, a cestu ke zdrojovému souboru záznamu. Chcete-li odebrat cestu ke zdrojovému souboru ze sloupce zachráněných dat, můžete nastavit konfiguraci SQL spark.conf.set("spark.databricks.sql.rescuedDataColumn.filePath.enabled", "false"). Záchranný datový sloupec můžete povolit nastavením možnosti rescuedDataColumn na název sloupce při čtení dat, například _rescued_data s spark.read.option("rescuedDataColumn", "_rescued_data").format("csv").load(<path>).
Analyzátor CSV podporuje při analýze záznamů tři režimy: PERMISSIVE, DROPMALFORMEDa FAILFAST. Při použití společně s datovým rescuedDataColumntypem neshody nezpůsobí vyřazení záznamů v DROPMALFORMED režimu nebo vyvolání chyby v FAILFAST režimu. Vyřadí se jenom poškozené záznamy ( tj. neúplné nebo poškozené sdílené svazky clusteru) nebo způsobí chyby.
Pokud rescuedDataColumn se používá v PERMISSIVE režimu, platí pro poškozené záznamy následující pravidla:
- První řádek souboru (řádek záhlaví nebo datový řádek) nastaví očekávanou délku řádku.
- Řádek s jiným počtem sloupců se považuje za neúplný.
- Neshody datových typů se nepovažují za poškozené záznamy.
- Pouze neúplné a poškozené záznamy CSV jsou považovány za poškozené a zaznamenané do
_corrupt_recordsloupce nebobadRecordsPath.
Příklad SQL: Čtení souboru CSV
Následující příklad SQL načte soubor CSV pomocí read_files.
-- mode "FAILFAST" aborts file parsing with a RuntimeException if malformed lines are encountered
SELECT * FROM read_files(
'abfss://<bucket>@<storage-account>.dfs.core.windows.net/<path>/<file>.csv',
format => 'csv',
header => true,
mode => 'FAILFAST')
Příklady Scala, R a Pythonu: Čtení souboru CSV
Následující poznámkový blok ukazuje, jak číst soubor, zobrazit ukázková data a vytisknout schéma dat pomocí Scala, R a Pythonu. Příklady v této části používají datovou sadu diamantů. Zadejte cestu k datové sadě a také všechny možnosti, které chcete.
Čtení poznámkového bloku souborů CSV
příklad : Zadání schématu
Pokud je známo schéma souboru CSV, můžete pro čtenáře CSV zadat požadované schéma s možností schema.
Čtení souborů CSV se schématem v poznámkovém bloku
Příklad SQL s využitím read_files:
SELECT * FROM read_files(
'abfss://<bucket>@<storage-account>.dfs.core.windows.net/<path>/<file>.csv',
format => 'csv',
header => false,
schema => 'id string, date date, event_time timestamp')
Příklad: Nástrahy při čtení podmnožiny sloupců
Chování analyzátoru CSV závisí na sadě přečtených sloupců. Pokud je zadané schéma nesprávné, mohou se výsledky výrazně lišit v závislosti na podmnožině sloupců, ke kterým se přistupuje. Následující poznámkový blok představuje nejběžnější nástrahy.