Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln innehåller exempel för att läsa CSV-filer med Azure Databricks med hjälp av Python, Scala, R och SQL.
Kommentar
Databricks rekommenderar tabellvärdesfunktionenread_files
för SQL-användare att läsa CSV-filer.
read_files
finns i Databricks Runtime 13.3 LTS och senare.
Du kan också använda en tillfällig vy. Om du använder SQL för att läsa CSV-data direkt utan att använda tillfälliga vyer eller read_files
gäller följande begränsningar:
- Du kan inte ange alternativ för datakälla.
- Du kan inte ange schemat för data.
Alternativ
Du kan konfigurera flera alternativ för CSV-fildatakällor. Läs mer i följande Apache Spark-referensartiklar för läsalternativ som stöds:
Den här artikeln beskriver endast läsning av CSV, men du kan lära dig mer om skrivalternativ som stöds i följande Apache Spark-referensartiklar:
Arbeta med felaktiga CSV-poster
När du läser CSV-filer med ett angivet schema är det möjligt att data i filerna inte matchar schemat. Ett fält som till exempel innehåller namnet på staden parsas inte som ett heltal. Konsekvenserna beror på vilket läge parsern körs i:
-
PERMISSIVE
(standard): null infogas för fält som inte kunde parsas korrekt -
DROPMALFORMED
: släpper rader som innehåller fält som inte kunde parsas -
FAILFAST
: avbryter läsningen om felaktiga data hittas
Om du vill ange läget använder du alternativet mode
.
diamonds_df = (spark.read
.format("csv")
.option("mode", "PERMISSIVE")
.load("/databricks-datasets/Rdatasets/data-001/csv/ggplot2/diamonds.csv")
)
I läget PERMISSIVE
är det möjligt att inspektera de rader som inte kunde parsas korrekt med någon av följande metoder:
- Du kan ange en anpassad sökväg till alternativet
badRecordsPath
för att registrera skadade poster i en fil. - Du kan lägga till kolumnen
_corrupt_record
i schemat som anges i DataFrameReader för att granska skadade poster i den resulterande DataFrame.
Kommentar
Alternativet badRecordsPath
har företräde framför , vilket innebär att felformade rader som skrivits till den angivna sökvägen inte visas i den resulterande DataFrame.The option takes precedence over _corrupt_record
, meaning that malformed rows written to the provided path do not appear in the resultant DataFrame.
Standardbeteendet för felaktiga poster ändras när du använder den räddade datakolumnen.
Hitta en notebook-fil med felaktiga rader
Återställd datakolumn
Kommentar
Den här funktionen stöds i Databricks Runtime 8.3 (EoS) och senare.
När du använder PERMISSIVE
läget kan du aktivera den räddade datakolumnen för att samla in data som inte parsats eftersom ett eller flera fält i en post har något av följande problem:
- Saknas i det angivna schemat.
- Matchar inte datatypen för det angivna schemat.
- Har ett ärendematchningsfel med fältnamnen i det angivna schemat.
Den återvunna datakolumnen returneras som ett JSON-dokument som innehåller de kolumnerna som räddades och källfilens sökväg för posten. Om du vill ta bort källfilsökvägen från den räddade datakolumnen kan du ange SQL-konfigurationen spark.conf.set("spark.databricks.sql.rescuedDataColumn.filePath.enabled", "false")
. Du kan aktivera den räddade datakolumnen genom att ange alternativet rescuedDataColumn
till ett kolumnnamn när du läser data, till exempel _rescued_data
med spark.read.option("rescuedDataColumn", "_rescued_data").format("csv").load(<path>)
.
CSV-parsern stöder tre lägen vid parsning av poster: PERMISSIVE
, DROPMALFORMED
och FAILFAST
. När de används tillsammans med rescuedDataColumn
, orsakar inte datatypsmatchningar att poster tas bort i DROPMALFORMED
läge eller utlöser ett fel i FAILFAST
läge. Endast skadade poster, det vill:s ofullständiga eller felaktiga CSV, tas bort eller utlöser fel.
När rescuedDataColumn
används i PERMISSIVE
läge gäller följande regler för skadade poster:
- Den första raden i filen (antingen en rubrikrad eller en datarad) anger den förväntade radlängden.
- En rad med ett annat antal kolumner anses vara ofullständig.
- Matchningsfel för datatyper betraktas inte som skadade poster.
- Endast ofullständiga och felaktiga CSV-poster anses vara skadade och registreras i
_corrupt_record
kolumnen ellerbadRecordsPath
.
SQL-exempel: Läsa CSV-fil
Följande SQL-exempel läser en CSV-fil med .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')
Scala-, R- och Python-exempel: Läs CSV-fil
Följande notebook-fil visar hur du läser en fil, visar exempeldata och skriver ut dataschemat med Scala, R och Python. Exemplen i det här avsnittet använder datauppsättningen diamonds. Ange sökvägen till datamängden samt eventuella alternativ som du vill använda.
Läsa CSV-filer notebook-fil
Exempel: Ange schema
När schemat för CSV-filen är känt kan du ange önskat schema för CSV-läsaren med alternativet schema
.
Läsa CSV-filer med schemaanteckningsboken
SQL-exempel med :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')
Exempel: Fallgropar vid läsning av en delmängd av kolumner
CSV-parserns beteende beror på vilken uppsättning kolumner som läss. Om det angivna schemat är felaktigt kan resultatet skilja sig avsevärt beroende på den delmängd av kolumner som används. Följande notebook-fil visar de vanligaste fallgroparna.