Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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 dokumentaci Apache Sparku k souborům 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 podporovaná v Databricks Runtime 8.2 a novějších.
Sloupec zachráněných dat zajišťuje, že během ETL nikdy nepřijdete o data. 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ěla, nebo protože došlo k neshodě typu, nebo protože velikost písmen sloupce v záznamu nebo souboru se neshodovala s písmenem ve schématu. Uložený datový sloupec se vrátí jako objekt blob JSON obsahující záchranné sloupce a cestu ke zdrojovému souboru záznamu. Chcete-li odebrat cestu ke zdrojovému souboru ze sloupce zachráněných dat, nastavte SQL konfiguraci spark.conf.set("spark.databricks.sql.rescuedDataColumn.filePath.enabled", "false"). Pokud chcete povolit záchranný datový sloupec, nastavte možnost rescuedDataColumn na název sloupce, 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, 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 volbu badRecordsPath při analýze JSON, neshody datových typů nejsou považovány za chybná data, když používáte rescuedDataColumn. Jsou uloženy pouze neúplné a poškozené záznamy JSON v badRecordsPath.
Příklady
Následující příklady ukazují, jak číst a zapisovat soubory JSON pomocí rozhraní DATAFrame API a SQL.
Režim s jedním řádkem
Každý řádek obsahuje jeden objekt JSON:
{"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:
Python
df = spark.read.format("json").load("example.json")
df.printSchema()
Scala
val df = spark.read.format("json").load("example.json")
df.printSchema
Spark odvodí schéma automaticky:
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
Následující objekt JSON zahrnuje 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:
Python
mdf = spark.read.option("multiline", "true").format("json").load("/tmp/multi-line.json")
mdf.show(truncate=False)
Scala
val mdf = spark.read.option("multiline", "true").format("json").load("/tmp/multi-line.json")
mdf.show(false)
SQL
CREATE TEMPORARY VIEW multiLineJsonTable
USING json
OPTIONS (path="/tmp/multi-line.json",multiline=true)
Čtení souborů JSON pomocí SQL
Ke čtení souborů JSON můžete použít read_files funkci tabulkové funkce s hodnotou tabulky v SQL.
SELECT * FROM read_files(
'<path to json file or folder>',
format => 'json',
multiLine => true)
Můžete také použít USING JSON ke čtení souborů JSON. Databricks ale místo toho doporučuje použití read_filesUSING JSON , protože read_files umožňuje specifikaci schématu a další možnosti zpracování souborů.
DROP TABLE IF EXISTS json_data;
CREATE TABLE json_data
USING JSON
OPTIONS (path "/path/to/file.json", multiline true);
SELECT * FROM json_data;
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 části Podporované kódování.
Příklad poznámkového bloku: Čtení souborů JSON
Následující notebook ukazuje režim jednořádkového a víceřádkového zobrazení.
Čtení JSON souborů v notebooku
Získání poznámkového bloku