全部产品
Search
文档中心

Realtime Compute for Apache Flink:JSON

更新时间:Jul 06, 2025

Topik ini menjelaskan penggunaan format JSON dan pemetaan tipe data.

Informasi latar belakang

Format JSON digunakan untuk membaca dan menulis data JSON berdasarkan struktur JSON. Struktur JSON secara otomatis diinferensi dari skema tabel. Konektor yang mendukung format JSON meliputi Kafka connector, Upsert Kafka connector, Elasticsearch connector, Object Storage Service (OSS) connector, ApsaraDB for MongoDB connector, dan StarRocks connector.

Kode contoh

Berikut adalah contoh kode untuk membuat tabel dalam format JSON menggunakan Apache Kafka connector.

CREATE TABLE Orders (
orderId INT,
product STRING,
orderInfo MAP<STRING, STRING>,
orderTime TIMESTAMP(3),
WATERMARK FOR orderTime AS orderTime - INTERVAL '5' SECOND
) WITH (
'connector' = 'kafka',
'topic' = 'test-topic',
'properties.bootstrap.servers' = 'localhost:9092',
'format' = 'json',
'json.fail-on-missing-field' = 'false',
'json.ignore-parse-errors' = 'true'
)

Parameter

Parameter

Diperlukan

Nilai default

Tipe data

Deskripsi

format

Ya

(tidak ada)

STRING

Format yang Anda deklarasikan untuk digunakan. Jika ingin menggunakan format JSON, atur parameter ini ke json.

json.fail-on-missing-field

Tidak

false

BOOLEAN

Nilai valid:

  • true: Jika bidang yang perlu diuraikan tidak ada, bidang atau baris saat ini dilewati.

  • false: Jika bidang yang perlu diuraikan tidak ada, kesalahan dikembalikan dan penyebaran gagal dimulai. Ini adalah nilai default.

json.ignore-parse-errors

Tidak

false

BOOLEAN

Nilai valid:

  • true: Jika penguraian gagal, bidang atau baris saat ini dilewati.

  • false: Jika penguraian gagal, kesalahan dikembalikan dan penyebaran gagal dimulai. Ini adalah nilai default.

json.timestamp-format.standard

Tidak

SQL

STRING

Format timestamp input dan output. Nilai valid:

  • SQL: Timestamp input dalam format yyyy-MM-dd HH:mm:ss.s{presisi} diurai. Contohnya, timestamp input adalah 2020-12-30 12:13:14.123. Timestamp output dalam format yang sama dengan timestamp input.

  • ISO-8601: Timestamp input dalam format yyyy-MM-ddTHH:mm:ss.s{presisi} diurai. Contohnya, timestamp input adalah 2020-12-30T12:13:14.123. Timestamp output dalam format yang sama dengan timestamp input.

json.map-null-key.mode

Tidak

FAIL

STRING

Metode yang digunakan untuk menangani nilai kunci null dalam peta. Nilai valid:

  • FAIL: Kesalahan dikembalikan jika nilai kunci dalam peta adalah null.

  • DROP: Data yang nilainya kunci adalah null dalam peta dibuang.

  • LITERAL: Konstanta string digunakan untuk menggantikan nilai kunci null dalam peta. Nilai konstanta string ditentukan oleh parameter json.map-null-key.literal.

json.map-null-key.literal

Tidak

null

STRING

Jika parameter json.map-null-key.mode diatur ke LITERAL, konstanta string yang ditentukan digunakan untuk menggantikan nilai kunci null dalam peta.

json.encode.decimal-as-plain-number

Tidak

false

BOOLEAN

Nilai valid:

  • true: Semua data tipe DECIMAL tetap tidak berubah dan tidak direpresentasikan dalam format notasi ilmiah. Contohnya, 0.000000027 direpresentasikan sebagai 0.000000027.

  • false: Semua data tipe DECIMAL direpresentasikan dalam format notasi ilmiah. Contohnya, 0.000000027 direpresentasikan sebagai 2.7E-8.

json.write-null-properties

Tidak

true

BOOLEAN

Menentukan apakah akan menulis nilai kosong kolom ke string JSON. Nilai valid:

  • true: Nilai kosong kolom ditulis sebagai nilai null ke string JSON.

  • false: Nilai kosong kolom tidak ditulis ke string JSON.

Catatan

Anda dapat mengonfigurasi parameter ini hanya ketika Realtime Compute for Apache Flink menggunakan Ververica Runtime (VVR) 8.0.6 atau lebih baru.

Pemetaan tipe data

Struktur JSON secara otomatis diinferensi dari skema tabel. Di Realtime Compute for Apache Flink, format JSON memanggil API jackson databind untuk menguraikan dan menghasilkan data JSON. Tabel berikut menjelaskan pemetaan antara tipe data Flink SQL dan tipe data JSON.

Tipe data Realtime Compute for Apache Flink SQL

Tipe data JSON

CHAR / VARCHAR / STRING

STRING

BOOLEAN

BOOLEAN

BINARY / VARBINARY

STRING dengan encoding: base64

DECIMAL

NUMBER

TINYINT

NUMBER

SMALLINT

NUMBER

INT

NUMBER

BIGINT

NUMBER

FLOAT

NUMBER

DOUBLE

NUMBER

DATE

STRING dengan format: date

TIME

STRING dengan format: time

TIMESTAMP

STRING dengan format: date-time

TIMESTAMP_WITH_LOCAL_TIME_ZONE

STRING dengan format: date-time (dengan zona waktu UTC)

INTERVAL

NUMBER

ARRAY

ARRAY

MAP / MULTISET

OBJECT

ROW

OBJECT

Lainnya

Data yang ditulis ke OSS tidak dapat disimpan sebagai file JSON. Untuk informasi lebih lanjut, lihat FLINK-30635.