Le format JSON permet de lire et d'écrire des données JSON. La structure JSON est déduite automatiquement du schéma de la table. Realtime Compute for Apache Flink utilise l'API jackson databind pour analyser et générer les données JSON.
Les connecteurs suivants prennent en charge le format JSON :
Exemple
L'exemple suivant crée une table Kafka qui lit et écrit des données au format JSON.
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'
);
Paramètres
| Paramètre | Obligatoire | Valeur par défaut | Type | Description |
|---|---|---|---|---|
format |
Oui | (aucune) | STRING | Format à utiliser. Définissez la valeur sur json. |
json.fail-on-missing-field |
Non | false | BOOLEAN | Indique s'il faut ignorer un champ ou une ligne lorsqu'un champ à analyser est manquant. true : ignore le champ ou la ligne. false : renvoie une erreur et entraîne l'échec du déploiement. |
json.ignore-parse-errors |
Non | false | BOOLEAN | Indique s'il faut ignorer un champ ou une ligne en cas d'échec de l'analyse. true : ignore le champ ou la ligne. false : renvoie une erreur et entraîne l'échec du déploiement. |
json.timestamp-format.standard |
Non | SQL | STRING | Format d'horodatage pour l'entrée et la sortie. SQL : yyyy-MM-dd HH:mm:ss.s{precision} (par exemple, 2020-12-30 12:13:14.123). ISO-8601 : yyyy-MM-ddTHH:mm:ss.s{precision} (par exemple, 2020-12-30T12:13:14.123). |
json.map-null-key.mode |
Non | FAIL | STRING | Méthode de gestion des clés nulles dans une map. FAIL : renvoie une erreur. DROP : supprime l'entrée. LITERAL : remplace la clé nulle par la chaîne spécifiée par json.map-null-key.literal. |
json.map-null-key.literal |
Non | null | STRING | Constante de chaîne utilisée pour remplacer les clés de map nulles lorsque json.map-null-key.mode est défini sur LITERAL. |
json.encode.decimal-as-plain-number |
Non | false | BOOLEAN | Indique s'il faut encoder les valeurs DECIMAL en notation décimale standard. true : utilise la notation décimale standard (par exemple, 0.000000027). false : utilise la notation scientifique (par exemple, 2.7E-8). |
json.write-null-properties |
Non | true | BOOLEAN | Indique s'il faut écrire les valeurs de colonne nulles dans la sortie JSON. true : écrit les valeurs nulles. false : omet les champs nuls. Nécessite Ververica Runtime (VVR) 8.0.6 ou version ultérieure. |
Mappages de types de données
| Type Flink SQL | Type JSON |
|---|---|
| CHAR / VARCHAR / STRING | STRING |
| BOOLEAN | BOOLEAN |
| BINARY / VARBINARY | STRING (encodé en base64) |
| DECIMAL | NUMBER |
| TINYINT | NUMBER |
| SMALLINT | NUMBER |
| INT | NUMBER |
| BIGINT | NUMBER |
| FLOAT | NUMBER |
| DOUBLE | NUMBER |
| DATE | STRING (format date) |
| TIME | STRING (format time) |
| TIMESTAMP | STRING (format date-time) |
| TIMESTAMP_WITH_LOCAL_TIME_ZONE | STRING (format date-time, UTC) |
| INTERVAL | NUMBER |
| ARRAY | ARRAY |
| MAP / MULTISET | OBJECT |
| ROW | OBJECT |
Limitations
Les données écrites dans OSS via le format JSON ne peuvent pas être enregistrées sous forme de fichiers JSON. Pour plus de détails, consultez la rubrique FLINK-30635.