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 tabulkové hodnoty, 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_filesplatí 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ý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 tuto mode možnost.

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.
  • Sloupec můžete přidat _corrupt_record do schématu zadaného objektu DataFrameReader a zkontrolovat poškozené záznamy ve výsledném datovém rámci.

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í sloupce zachráněných dat.

Vyhledání poškozených řádků v poznámkovém bloku

Získat poznámkový blok

Sloupec zachráněných dat

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 spark.conf.set("spark.databricks.sql.rescuedDataColumn.filePath.enabled", "false")SQL . Záchranný datový sloupec můžete povolit nastavením možnosti rescuedDataColumn na název sloupce při čtení dat, například _rescued_data pomocí 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_record sloupce 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, 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

Získat poznámkový blok

Příklad: Zadání schématu

Pokud je známo schéma souboru CSV, můžete určit požadované schéma pro čtenáře CSV s schema možností.

Čtení souborů CSV s poznámkovým blokem schématu

Získat poznámkový blok

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žina sloupců

Chování analyzátoru sdíleného svazku clusteru 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.

Upozornění na čtení podmnožina sloupců poznámkového bloku souboru CSV

Získat poznámkový blok