Megosztás a következőn keresztül:


JSON-fájl

JSON-fájlokat egysoros vagy többsoros módban is olvashat. Egysoros módban a fájlok több részre oszthatók, és párhuzamosan olvashatók. Többsoros módban a fájl teljes entitásként van betöltve, és nem osztható fel.

További információ: JSON Files.

Beállítások

A támogatott olvasási és írási lehetőségekről az alábbi Apache Spark-referenciacikkek nyújtanak segítséget.

Mentett adatoszlop

Megjegyzés:

Ez a funkció a Databricks Runtime 8.2-ben (nem támogatott) és újabb verziókban támogatott.

A mentett adatoszlop gondoskodik arról, hogy az ETL során soha ne veszítsen el vagy maradjon ki az adatokból. A mentett adatoszlop olyan adatokat tartalmaz, amelyeket nem elemeztek, vagy azért, mert hiányzott az adott sémából, vagy mert típuseltérés történt, vagy mert a rekord vagy fájl oszlopának burkolata nem egyezett meg a sémában lévővel. A mentett adatoszlop JSON-blobként lesz visszaadva, amely a mentett oszlopokat és a rekord forrásfájl-elérési útját tartalmazza. Ha el szeretné távolítani a forrásfájl elérési útját a mentett adatoszlopból, beállíthatja az SQL-konfigurációt spark.conf.set("spark.databricks.sql.rescuedDataColumn.filePath.enabled", "false"). A mentett adatoszlopot úgy engedélyezheti, hogy a beállítást rescuedDataColumn oszlopnévre állítja, például _rescued_data a következővel spark.read.option("rescuedDataColumn", "_rescued_data").format("json").load(<path>): .

A JSON-elemző három módot támogat a rekordok elemzésekor: PERMISSIVE, DROPMALFORMEDés FAILFAST. Ha együtt rescuedDataColumnhasználják, az adattípus eltérései nem okoznak rekordokat módban, DROPMALFORMED és nem jeleznek hibát FAILFAST módban. A rendszer csak a sérült rekordokat – azaz hiányos vagy hibásan formázott JSON-rekordokat – elveti vagy hibát jelez. Ha a JSON elemzésekor használja a beállítást badRecordsPath , az adattípus eltérései nem minősülnek rossz rekordnak a rescuedDataColumnhasználata során. A rendszer csak hiányos és hibás JSON-rekordokat tárol.badRecordsPath

Példák

Egysoros mód

Ebben a példában soronként egy JSON-objektum van:

{"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"}}

A JSON-adatok olvasásához használja a következőt:

val df = spark.read.format("json").load("example.json")

A Spark automatikusan a sémára következtet.

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)

Többsoros mód

Ez a JSON-objektum több sort foglal el:

[
  {"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"
    }
  }
]

Az objektum olvasásához engedélyezze a többsoros módot:

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)

Karakterkészlet automatikus észlelése

Alapértelmezés szerint a bemeneti fájlok karakterkészlete automatikusan észlelhető. A karakterkészletet explicit módon is megadhatja a charset következő beállítással:

spark.read.option("charset", "UTF-16BE").format("json").load("fileInUTF16.json")

Néhány támogatott karakterkészlet: UTF-8, , UTF-16BE, UTF-16LE, UTF-16UTF-32BE, , UTF-32LEUTF-32. Az Oracle Java Standard kiadás által támogatott karakterkészletek teljes listáját lásd: Támogatott kódolások.

Példa jegyzetfüzetre: JSON-fájlok olvasása

Az alábbi jegyzetfüzet bemutatja az egysoros és a többsoros módot.

JSON-fájlok jegyzetfüzetének olvasása

Jegyzetfüzet beszerzése