Sdílet prostřednictvím


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.

Sloupec zachráněných dat

Poznámka:

Tato funkce je podporována v Databricks Runtime 8.2 (nepodporované) a vyšší.

Sloupec zachráněných dat zajišťuje, že během ETL nikdy nepřijdete o data nebo je nezmeškáte. Sloupec zachráněných dat obsahuje všechna data, která nebyla analyzována, a to buď proto, že v daném schématu chybí, nebo protože došlo k neshodě typu nebo kvůli neshodě písmen sloupce v záznamu nebo souboru se s tímto schématem neshodovalo. Uložený datový sloupec se vrátí jako objekt blob JSON obsahující sloupce, které byly záchranovány, 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, například _rescued_data 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, 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. 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 badRecordsPathpouze 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 odvodí schéma automaticky.

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ý seznam 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

Získat poznámkový blok