JSON-bestand

U kunt JSON-bestanden lezen in de modus met één regel of met meerdere lijnen. In de modus met één regel kan een bestand in veel delen worden gesplitst en parallel worden gelezen. In de modus met meerdere lijnen wordt een bestand geladen als een hele entiteit en kan het niet worden gesplitst.

Zie JSON Files voor meer informatie.

Opties

Zie de volgende Apache Spark voor ondersteunde lees- en schrijfopties.

Voorbeelden

Modus met één regel

In dit voorbeeld is er één JSON-object per regel:

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

Als u de JSON-gegevens wilt lezen, gebruikt u:

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

Spark defeert het schema automatisch.

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)

Modus voor meerdere lijnen

Dit JSON-object neemt meerdere regels in beslag:

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

Als u dit object wilt lezen, moet u de modus voor meerdere lijnen inschakelen:

SQL

CREATE TEMPORARY VIEW multiLineJsonTable
USING json
OPTIONS (path="/tmp/multi-line.json",multiline=true)

Scala

val mdf = spark.read.option("multiline", "true").json("/tmp/multi-line.json")
mdf.show(false)

Automatische detectie van Charset

Standaard wordt de charset van invoerbestanden automatisch gedetecteerd. U kunt de charset expliciet opgeven met behulp van de charset optie :

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

Enkele ondersteunde charsets zijn: UTF-8 , , , , , , , UTF-16BEUTF-16LEUTF-16UTF-32BEUTF-32LEUTF-32 . Zie Supported Encodings(Ondersteunde coderingen) voor de volledige lijst met charsets die worden ondersteund door Oracle Java SE.

Notebook

In het volgende notebook worden de modus met één regel en meerdere lijnen gedemonstreerd.

Notebook JSON-bestanden lezen

Notebook downloaden