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:
|
json.ignore-parse-errors | Tidak | false | BOOLEAN | Nilai valid:
|
json.timestamp-format.standard | Tidak | SQL | STRING | Format timestamp input dan output. Nilai valid:
|
json.map-null-key.mode | Tidak | FAIL | STRING | Metode yang digunakan untuk menangani nilai kunci null dalam peta. Nilai valid:
|
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:
|
json.write-null-properties | Tidak | true | BOOLEAN | Menentukan apakah akan menulis nilai kosong kolom ke string JSON. Nilai valid:
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.