Soubor JSON
Soubory JSON můžete číst v jednořádkovém nebo víceřádkovém režimu. V jednořádkovém režimu lze soubor rozdělit do mnoha částí a číst paralelně. V režimu s více řádky se soubor načte jako celá entita a nelze ho rozdělit.
Další informace najdete v tématu Soubory JSON.
Možnosti
Podporované možnosti čtení a zápisu najdete v následujících referenčních článcích k Apache Sparku.
Zachráněná data column
Poznámka:
Tato funkce se podporuje v Databricks Runtime 8.2 (EoS) a novějších.
Záchranná data column zajistí, že během ETL nikdy neztratíte nebo nezmeškáte data. Zachráněná data column obsahují všechna data, která nebyla analyzována, buď proto, že chyběla v daném schema, nebo kvůli neshodě typů, nebo protože velikost písmen názvu column v záznamu nebo souboru se neshodovala s verzí v schema. Zachráněná data column se vrátí jako JSON objekt obsahující columns, které byly zachráněny, a cestu ke zdrojovému souboru. Pokud chcete remove cestu ke zdrojovému souboru ze columnzachráněných dat, můžete setspark.conf.set("spark.databricks.sql.rescuedDataColumn.filePath.enabled", "false")
konfigurace SQL . Záchranná data column můžete povolit nastavením možnosti rescuedDataColumn
na název column, například _rescued_data
spolu s spark.read.option("rescuedDataColumn", "_rescued_data").format("json").load(<path>)
.
Analyzátor JSON podporuje při analýze záznamů tři režimy: PERMISSIVE
, DROPMALFORMED
a FAILFAST
. Při použití společně s datovým rescuedDataColumn
typem neshody nezpůsobí vyřazení záznamů v DROPMALFORMED
režimu nebo vyvolání chyby v FAILFAST
režimu. Zahodí se jenom poškozené záznamy ( tj. neúplné nebo poškozené JSON) nebo vyvolá chyby. Pokud použijete možnost badRecordsPath
při analýze JSON, neshody datových typů se při použití objektu rescuedDataColumn
. nepovažují za chybné záznamy . Jsou uloženy badRecordsPath
pouze neúplné a poškozené záznamy JSON .
Příklady
Režim s jedním řádkem
V tomto příkladu je jeden objekt JSON na řádek:
{"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"}}
Ke čtení dat JSON použijte:
val df = spark.read.format("json").load("example.json")
Spark automaticky odvodí schema.
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)
Víceřádkový režim
Tento objekt JSON zabírá více řádků:
[
{"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"
}
}
]
Pokud chcete tento objekt přečíst, povolte režim s více řádky:
SQL
CREATE TEMPORARY VIEW multiLineJsonTable
USING json
OPTIONS (path="/tmp/multi-line.json",multiline=true)
Scala
val mdf = spark.read.option("multiline", "true").format("json").load("/tmp/multi-line.json")
mdf.show(false)
Automatická detekce znakové sady
Ve výchozím nastavení se znaková sada vstupních souborů rozpozná automaticky. Znakovou sadu můžete explicitně zadat pomocí charset
možnosti:
spark.read.option("charset", "UTF-16BE").format("json").load("fileInUTF16.json")
Mezi podporované znakové sady patří: UTF-8
, UTF-16BE
, UTF-16LE
, UTF-16
, UTF-32BE
, UTF-32LE
, . UTF-32
Úplné list znakových sad podporovaných oracle Java SE najdete v tématu Podporované kódování.
Příklad poznámkového bloku: Čtení souborů JSON
Následující poznámkový blok ukazuje režim jednořádkového a víceřádkového režimu.
Čtení poznámkového bloku souborů JSON
poznámkového bloku