Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Pliki JSON można odczytywać w trybie jednowierszowym lub wielowierszowym. W trybie jednowierszowym plik można podzielić na wiele części i odczytywać równolegle. W trybie wielowierszowym plik jest ładowany jako całość i nie można go podzielić .
Aby uzyskać więcej informacji, zobacz Pliki JSON.
Opcje
Zapoznaj się z następującymi artykułami referencyjnymi platformy Apache Spark, aby uzyskać informacje na temat obsługiwanych opcji odczytu i zapisu.
Uratowana kolumna danych
Uwaga
Ta funkcja jest obsługiwana w środowisku Databricks Runtime 8.2 (EoS) i nowszym.
Uratowana kolumna danych gwarantuje, że nigdy nie utracisz ani nie przegapisz danych podczas etl. Uratowana kolumna danych zawiera dane, które nie zostały przeanalizowane, albo dlatego, że brakowało ich w danym schemacie, albo dlatego, że wystąpiła niezgodność typów, albo ponieważ pisownia wielkości liter kolumny w rekordzie lub pliku nie była zgodna ze schematem. Uratowana kolumna danych jest zwracana jako obiekt blob 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 włączyć kolumnę z odzyskanymi danymi, ustawiając opcję rescuedDataColumn
na nazwę kolumny, na przykład _rescued_data
w połączeniu z spark.read.option("rescuedDataColumn", "_rescued_data").format("json").load(<path>)
.
Analizator JSON obsługuje trzy tryby podczas analizowania rekordów: PERMISSIVE
, DROPMALFORMED
i FAILFAST
. W przypadku użycia razem z elementem rescuedDataColumn
niezgodność 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 dane JSON — są porzucane lub zgłaszane błędy. Jeśli używasz opcji badRecordsPath
podczas analizowania kodu JSON, niezgodności typów danych nie są traktowane jako nieprawidłowe rekordy podczas korzystania z elementu rescuedDataColumn
. W pliku badRecordsPath
są przechowywane tylko niekompletne i źle sformułowane rekordy JSON.
Przykłady
Tryb jednowierszowy
W tym przykładzie istnieje jeden obiekt JSON na wiersz:
{"string":"string1","int":1,"array":[1,2,3],"dict": {"key": "value1"}}
{"string":"string2","int":2,"array":[2,4,6],"dict": {"key": "value2"}}
{"string":"string3","int":3,"array":[3,6,9],"dict": {"key": "value3", "extra_key": "extra_value3"}}
Aby odczytać dane JSON, użyj:
val df = spark.read.format("json").load("example.json")
Platforma Spark automatycznie wywnioskuje schemat.
df.printSchema
root
|-- array: array (nullable = true)
| |-- element: long (containsNull = true)
|-- dict: struct (nullable = true)
| |-- extra_key: string (nullable = true)
| |-- key: string (nullable = true)
|-- int: long (nullable = true)
|-- string: string (nullable = true)
Tryb wielowierszowy
Ten obiekt JSON zajmuje wiele wierszy:
[
{ "string": "string1", "int": 1, "array": [1, 2, 3], "dict": { "key": "value1" } },
{ "string": "string2", "int": 2, "array": [2, 4, 6], "dict": { "key": "value2" } },
{
"string": "string3",
"int": 3,
"array": [3, 6, 9],
"dict": {
"key": "value3",
"extra_key": "extra_value3"
}
}
]
Aby odczytać ten obiekt, włącz tryb wielowierszowy:
SQL
CREATE TEMPORARY VIEW multiLineJsonTable
USING json
OPTIONS (path="/tmp/multi-line.json",multiline=true)
Skala
val mdf = spark.read.option("multiline", "true").format("json").load("/tmp/multi-line.json")
mdf.show(false)
Automatyczne wykrywanie zestawu znaków
Domyślnie zestaw znaków plików wejściowych jest wykrywany automatycznie. Możesz jawnie określić zestaw znaków przy użyciu charset
opcji :
spark.read.option("charset", "UTF-16BE").format("json").load("fileInUTF16.json")
Niektóre obsługiwane zestawy znaków to: UTF-8
, , UTF-16BE
, UTF-16LE
UTF-16
, UTF-32BE
, UTF-32LE
, . UTF-32
Aby uzyskać pełną listę zestawów znaków obsługiwanych przez program Oracle Java SE, zobacz Supported Encodings.
Przykład notesu: odczytywanie plików JSON
W poniższym notesie przedstawiono tryb jednowierszowy i tryb wielowierszowy.
Odczytywanie notesu plików JSON
Pobieranie notesu