Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ten artykuł zawiera przykłady odczytywania plików CSV z usługą Azure Databricks przy użyciu języków Python, Scala, R i SQL.
Uwaga
Usługa Databricks zaleca read_files użytkownikom sql funkcję wartości tabeli w celu odczytywania plików CSV.
read_files jest dostępny w środowisku Databricks Runtime 13.3 LTS i nowszym.
Możesz również użyć widoku tymczasowego. Jeśli używasz programu SQL do bezpośredniego odczytywania danych CSV bez używania widoków tymczasowych lub read_files, obowiązują następujące ograniczenia:
- Nie można określić opcji źródła danych.
- Nie można określić schematu danych.
Opcje
Dla źródeł danych plików CSV można skonfigurować kilka opcji. Aby uzyskać informacje na temat obsługiwanych opcji odczytu, zobacz następujące artykuły referencyjne platformy Apache Spark:
W tym artykule opisano tylko czytanie pliku CSV, ale możesz dowiedzieć się więcej o obsługiwanych opcjach zapisu w następujących artykułach referencyjnych platformy Apache Spark:
Praca z nieprawidłowo sformułowanymi rekordami CSV
Podczas odczytywania plików CSV z określonym schematem możliwe jest, że dane w plikach nie są zgodne ze schematem. Na przykład pole zawierające nazwę miasta nie będzie analizować jako liczba całkowita. Konsekwencje zależą od trybu, w jaki działa analizator:
-
PERMISSIVE(ustawienie domyślne): wartości null są wstawiane dla pól, których nie można poprawnie przeanalizować -
DROPMALFORMED: usuwa wiersze zawierające pola, których nie można przeanalizować -
FAILFAST: przerywa odczytywanie w przypadku znalezienia źle sformułowanych danych
Aby ustawić tryb, użyj mode opcji .
diamonds_df = (spark.read
.format("csv")
.option("mode", "PERMISSIVE")
.load("/databricks-datasets/Rdatasets/data-001/csv/ggplot2/diamonds.csv")
)
W trybie PERMISSIVE można sprawdzić wiersze, których nie można poprawnie przeanalizować przy użyciu jednej z następujących metod:
- Możesz podać niestandardową ścieżkę do opcji
badRecordsPathrejestrowania uszkodzonych rekordów w pliku. - Możesz dodać kolumnę
_corrupt_recorddo schematu dostarczonego do elementu DataFrameReader, aby przejrzeć uszkodzone rekordy w wynikowej ramce danych.
Uwaga
Opcja badRecordsPath ma pierwszeństwo przed _corrupt_recordwartością , co oznacza, że źle sformułowane wiersze zapisane w podanej ścieżce nie są wyświetlane w wynikowej ramce danych.
Domyślne zachowanie źle sformułowanych rekordów zmienia się podczas korzystania z uratowanej kolumny danych.
Znajdowanie źle sformułowanego notesu wierszy
Uratowana kolumna danych
Uwaga
Ta funkcja jest obsługiwana w środowisku Databricks Runtime 8.3 (EoS) i nowszym.
Podczas korzystania z trybu PERMISSIVE można włączyć zapasową kolumnę danych, aby przechwycić wszystkie niezinterpretowane dane, które nie zostały przeanalizowane, ponieważ przynajmniej jedno z pól w rekordzie ma jeden z następujących problemów:
- Brak podanego schematu.
- Nie jest zgodny z typem danych podanego schematu.
- Ma niezgodność wielkości liter z nazwami pól w podanym schemacie.
Uratowana kolumna danych jest zwracana jako dokument JSON zawierający kolumny, które zostały uratowane, oraz ścieżkę pliku źródłowego rekordu. Aby usunąć ścieżkę pliku źródłowego z uratowanej kolumny danych, możesz ustawić konfigurację SQL spark.conf.set("spark.databricks.sql.rescuedDataColumn.filePath.enabled", "false"). Możesz aktywować kolumnę odzyskanych danych, ustawiając opcję rescuedDataColumn na nazwę kolumny podczas odczytu danych, na przykład _rescued_data korzystając z spark.read.option("rescuedDataColumn", "_rescued_data").format("csv").load(<path>).
Analizator CSV obsługuje trzy tryby podczas analizowania rekordów: PERMISSIVE, DROPMALFORMEDi FAILFAST. W przypadku użycia razem z elementem rescuedDataColumnniezgodność typów danych nie powoduje porzucenia rekordów w DROPMALFORMED trybie lub zgłaszania błędu w FAILFAST trybie. Tylko uszkodzone rekordy — czyli niekompletne lub źle sformułowane woluminy CSV — są porzucane lub zgłaszane błędy.
W rescuedDataColumn przypadku użycia w PERMISSIVE trybie następujące reguły dotyczą uszkodzonych rekordów:
- Pierwszy wiersz pliku (wiersz nagłówka lub wiersz danych) ustawia oczekiwaną długość wiersza.
- Wiersz z inną liczbą kolumn jest uznawany za niekompletny.
- Niezgodność typów danych nie jest uznawana za uszkodzone rekordy.
- Tylko niekompletne i źle sformułowane rekordy CSV są uznawane za uszkodzone i rejestrowane w kolumnie
_corrupt_recordlubbadRecordsPath.
Przykład SQL: Odczyt pliku CSV
Poniższy przykład SQL odczytuje plik CSV przy użyciu polecenia 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')
Przykłady języków Scala, R i Python: odczyt pliku CSV
W poniższym notesie pokazano, jak odczytać plik, wyświetlić przykładowe dane i wydrukować schemat danych przy użyciu języka Scala, R i Python. W przykładach w tej sekcji użyto zestawu danych diamentów. Określ ścieżkę do zestawu danych, a także wszelkie opcje, które chcesz.
Odczytywanie notesu plików CSV
Przykład: Określanie schematu
Gdy jest znany schemat pliku CSV, można określić żądany schemat dla czytnika CSV z opcją schema .
Odczytywanie plików CSV za pomocą notesu schematu
Przykład SQL przy użyciu polecenia 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')
Przykład: pułapki odczytywania podzestawu kolumn
Zachowanie analizatora CSV zależy od zestawu odczytanych kolumn. Jeśli określony schemat jest niepoprawny, wyniki mogą się znacznie różnić w zależności od podzestawu kolumn, do których uzyskuje się dostęp. Poniższy notes przedstawia najbardziej typowe pułapki.