Čtení souborů CSV
Tento článek obsahuje příklady čtení souborů CSV pomocí Azure Databricks pomocí Pythonu, Scaly, R a SQL.
Poznámka:
Databricks doporučuje funkci read_files table-valued pro uživatele SQL ke čtení souborů 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 views nebo read_files
, platí následující omezení:
-
Nemůžete zadat možnosti zdroje dat.
- Nemůžete specifikovat schema pro data.
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ými schemaje možné, že data v souborech neodpovídají schema. 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.
K set režimu 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
badRecordsPath
záznamu poškozených záznamů do souboru. - Můžete přidat column
_corrupt_record
do schema, kterou poskytnete DataFrameReaderu, abyste zkontrolovali poškozené záznamy ve výsledném DataFrame.
Poznámka:
Tato badRecordsPath
možnost má přednost před _corrupt_record
chybnými řádky zapsanými do zadané cesty se ve výsledném datovém rámci nezobrazí.
Výchozí chování poškozených záznamů se změní při použití záchranných dat column.
Vyhledání poškozených řádků v poznámkovém bloku
zachráněná data column
Poznámka:
Tato funkce je podporovaná v Databricks Runtime 8.3 (EoS) a novějších.
Při použití režimu PERMISSIVE
můžete aktivovat záchranná data column, aby zachytila 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í v poskytnutém schema.
- Neodpovídá datovému typu poskytnutého schema.
- Má neshodu písmen s názvy polí v zadaném schema.
Zachráněná data column jsou vrácena jako JSON dokument obsahující columns, které byly zachráněny, a cestu k souboru zdroje záznamu. Pokud chcete remove cestu ze zachráněných dat ke zdrojovému souboru column, můžete set konfiguraci SQL spark.conf.set("spark.databricks.sql.rescuedDataColumn.filePath.enabled", "false")
. Aby bylo možné povolit záchranná data column, nastavte možnost rescuedDataColumn
na název column 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
, DROPMALFORMED
a FAILFAST
. Při použití společně s datovým rescuedDataColumn
typem 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 columns 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_record
column 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(
's3://<bucket>/<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, zobrazovat ukázková data a tisknout data schema 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
poznámkového bloku
Příklad : Zadejte schema
Pokud je známý schema souboru CSV, můžete určit požadovaný schema pro čtečku CSV pomocí možnosti schema
.
Čtení souborů CSV pomocí poznámkového bloku schema
Příklad SQL s využitím read_files
:
SELECT * FROM read_files(
's3://<bucket>/<path>/<file>.csv',
format => 'csv',
header => false,
schema => 'id string, date date, event_time timestamp')
Příklad: Nástrahy čtení podmnožiny columns
Chování analyzátoru CSV závisí na setcolumns, které se čtou. Pokud je zadaný schema nesprávný, mohou se výsledky výrazně lišit v závislosti na podmnožině columns, ke kterým se přistupuje. Následující poznámkový blok představuje nejběžnější nástrahy.