Sdílet prostřednictvím


Č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í:

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_recordchybný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

Get poznámkového 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, 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 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_recordcolumn nebo badRecordsPath.

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

Get poznámkového bloku

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.

Upozornění na čtení podmnožiny columns souboru CSV v poznámkovém bloku

Get poznámkový blok