Tous les produits
Search
Centre de documentation

DataWorks:Source de données Tablestore

Dernière mise à jour :Aug 27, 2026

Pour configurer une tâche de synchronisation par lots à l'aide de l'éditeur de code, vous devez définir les paramètres appropriés dans le script en respectant le format unifié requis. Pour plus d'informations, consultez Configuration en mode script. Les informations suivantes détaillent les paramètres à configurer pour les sources de données lors de la configuration d'une tâche de synchronisation par lots via l'éditeur de code.

Exemples de scripts Reader

Configuration en mode ligne pour la lecture de tables à colonnes larges

{ "type":"job", "version":"2.0",// The version number. "steps":[ { "stepType":"ots",// The plugin name. "parameter":{ "datasource":"",// The data source. "newVersion":"true",// Use the new version of otsreader. "mode": "normal",// Read data in row mode. "isTimeseriesTable":"false",// Configure this table as a wide-column table (not a time-series table). "column":[// The columns. { "name":"column1"// The column name. }, { "name":"column2" }, { "name":"column3" }, { "name":"column4" }, { "name":"column5" } ], "range":{ "split":[ { "type":"STRING", "value":"beginValue" }, { "type":"STRING", "value":"splitPoint1" }, { "type":"STRING", "value":"splitPoint2" }, { "type":"STRING", "value":"splitPoint3" }, { "type":"STRING", "value":"endValue" } ], "end":[ { "type":"STRING", "value":"endValue" }, { "type":"INT", "value":"100" }, { "type":"INF_MAX" }, { "type":"INF_MAX" } ], "begin":[ { "type":"STRING", "value":"beginValue" }, { "type":"INT", "value":"0" }, { "type":"INF_MIN" }, { "type":"INF_MIN" } ] }, "table":""// The table name. }, "name":"Reader", "category":"reader" }, { "stepType":"stream", "parameter":{}, "name":"Writer", "category":"writer" } ], "setting":{ "errorLimit":{ "record":"0"// The error count. }, "speed":{ "throttle":true,// false indicates that throttling is disabled and the throttling speed below does not take effect. true indicates that throttling is enabled. "concurrent":1 // The concurrency. "mbps":"12"// The throttling speed. } }, "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] } }

Configuration en mode ligne pour la lecture de tables de séries temporelles

{ "type":"job", "version":"2.0",// The version number. "steps":[ { "stepType":"ots",// The plugin name. "parameter":{ "datasource":"",// The data source. "table": "",// The table name. // mode must be set to normal for reading time-series data. "mode": "normal", // newVersion must be set to true for reading time-series data. "newVersion": "true", // Configure this table as a time-series table. "isTimeseriesTable":"true", // measurementName: The measurement name of the time-series data to read. This parameter is optional. If left empty, data from the entire table is read. "measurementName":"measurement_1", "column": [ { "name": "_m_name" }, { "name": "tagA", "is_timeseries_tag":"true" }, { "name": "double_0", "type":"DOUBLE" }, { "name": "string_0", "type":"STRING" }, { "name": "long_0", "type":"INT" }, { "name": "binary_0", "type":"BINARY" }, { "name": "bool_0", "type":"BOOL" }, { "type":"STRING", "value":"testString" } ] }, "name":"Reader", "category":"reader" }, { "stepType":"stream", "parameter":{}, "name":"Writer", "category":"writer" } ], "setting":{ "errorLimit":{ "record":"0"// The error count. }, "speed":{ "throttle":true,// false indicates that throttling is disabled and the throttling speed below does not take effect. true indicates that throttling is enabled. "concurrent":1 // The concurrency. "mbps":"12"// The throttling speed. } }, "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] } }

Configuration en mode colonne pour la lecture de tables à colonnes larges

{ "type":"job", "version":"2.0",// The version number. "steps":[ { "stepType":"ots",// The plugin name. "parameter":{ "datasource":"",// The data source. "table":"",// The table name. "newVersion":"true",// The new version of otsreader. "mode": "multiversion",// The multi-version mode. "column":[// Configure the column names to export (must be non-primary key columns). {"name":"mobile"}, {"name":"name"}, {"name":"age"}, {"name":"salary"}, {"name":"marry"} ], "range":{// The export range. "begin":[ {"type":"INF_MIN"}, {"type":"INF_MAX"} ], "end":[ {"type":"INF_MAX"}, {"type":"INF_MIN"} ], "split":[ ] }, }, "name":"Reader", "category":"reader" }, { "stepType":"stream", "parameter":{}, "name":"Writer", "category":"writer" } ], "setting":{ "errorLimit":{ "record":"0"// The error count. }, "speed":{ "throttle":true,// false indicates that throttling is disabled and the throttling speed below does not take effect. true indicates that throttling is enabled. "concurrent":1 // The concurrency. "mbps":"12"// The throttling speed. } }, "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] } }

Paramètres courants du script Reader

Paramètre

Description

Obligatoire

Valeur par défaut

endpoint

L'endpoint (adresse du service) du serveur Tablestore. Pour plus d'informations, consultez Endpoints.

Oui

N/A

accessId

L'AccessKey ID de l'instance Tablestore.

Oui

N/A

accessKey

L'AccessKey Secret de l'instance Tablestore.

Oui

N/A

instanceName

Le nom de l'instance Tablestore. Une instance constitue l'entité utilisée pour gérer le service Tablestore.

Après l'activation du service Tablestore, vous devez créer une instance dans la console, puis créer et gérer des tables au sein de cette instance.

L'instance représente l'unité de base pour la gestion des ressources Tablestore. Le contrôle d'accès et la comptabilisation des ressources s'effectuent au niveau de l'instance.

Oui

N/A

table

Le nom de la table d'où extraire les données. Vous ne pouvez spécifier qu'une seule table. Tablestore ne prend pas en charge la synchronisation multi-tables.

Oui

N/A

newVersion

Indique la version du plugin Tablestore Reader.

  • false : L'ancienne version de Tablestore Reader, qui prend uniquement en charge la lecture en mode ligne depuis des tables à colonnes larges.

  • true : La nouvelle version de Tablestore Reader, compatible avec le mode ligne, le mode colonne, les tables de séries temporelles et les tables à colonnes larges.

La nouvelle version de Tablestore Reader offre non seulement de nouvelles fonctionnalités, mais consomme également moins de ressources système. Nous vous recommandons d'utiliser cette nouvelle version.

Le plugin de la nouvelle version assure une rétrocompatibilité avec la configuration de l'ancienne version. Ajoutez simplement la configuration newVersion=true aux tâches existantes pour qu'elles s'exécutent correctement.

Non

false

mode

Définit le mode de lecture des données. Deux modes sont disponibles :

  • normal : Lit les données en mode ligne. Le format des données est {valeurs des colonnes de clé primaire, valeurs des colonnes d'attributs}.

  • multiVersion : Lit les données en mode colonne. Le format des données est {colonnes de clé primaire, nom de la colonne d'attribut, horodatage, valeur de la colonne d'attribut}.

Ce paramètre n'est pris en compte que si la nouvelle version de Tablestore Reader est utilisée (newVersion:true).

L'ancienne version de Tablestore Reader ignore le paramètre mode et ne permet que la lecture en mode ligne.

Non

normal

isTimeseriesTable

Indique si la table de données est une table de séries temporelles :

  • false : Il s'agit d'une table standard à colonnes larges.

  • true : Il s'agit d'une table de séries temporelles.

Ce paramètre n'est effectif que lorsque newVersion:true & mode:normal est configuré.

L'ancienne version de Tablestore Reader ne prend pas en charge les tables de séries temporelles, et ces dernières ne peuvent pas être lues en mode colonne.

Non

false

Paramètres supplémentaires du script Reader

Tablestore Reader permet la lecture des tables à colonnes larges en mode ligne, des tables de séries temporelles en mode ligne, ainsi que des tables à colonnes larges en mode colonne. Chaque mode dispose de ses propres paramètres supplémentaires.

Paramètres du mode ligne pour la lecture de tables à colonnes larges

Paramètre

Description

Obligatoire

Valeur par défaut

column

L'ensemble des noms de colonnes à synchroniser depuis la table configurée, décrit sous forme de tableau JSON. Tablestore étant un système NoSQL, vous devez spécifier les noms des colonnes lors de l'extraction des données par Tablestore Reader.

  • La lecture de colonnes classiques est prise en charge, par exemple {"name":"col1"}.

  • La lecture partielle de colonnes est possible. Si aucune configuration n'est définie pour une colonne, Tablestore Reader ne la lit pas.

  • La lecture de colonnes constantes est autorisée, par exemple {"type":"STRING", "value":"DataX"}. Utilisez le champ type pour préciser le type de la constante. Les types suivants sont acceptés : String, Int, Double, Bool, Binary (encodé en Base64), INF_MIN (la valeur minimale définie par le système pour Tablestore ; si vous utilisez cette valeur, ne précisez pas l'attribut value, sinon une erreur sera générée), et INF_MAX (la valeur maximale définie par le système pour Tablestore ; si vous utilisez cette valeur, ne précisez pas l'attribut value, sinon une erreur sera générée).

  • Les fonctions ou expressions personnalisées ne sont pas prises en charge. Tablestore n'offrant pas de fonctions SQL ni de capacités d'expression, Tablestore Reader ne peut pas fournir de fonctionnalités liées aux colonnes calculées ou aux expressions.

Oui

N/A

begin et end

Les paramètres begin et end définissent la plage de données à extraire de la table Tablestore.

begin et end décrivent la distribution des intervalles de la PrimaryKey Tablestore. Pour les intervalles infinis, utilisez respectivement {"type":"INF_MIN"} et {"type":"INF_MAX"} pour begin et end, où type indique le type de données à extraire.

Remarque
  • Les valeurs par défaut de begin et end sont [INF_MIN,INF_MAX), ce qui correspond à la lecture de toutes les données.

  • Si le nombre de valeurs configurées pour begin et end est inférieur au nombre de colonnes de clé primaire, la plage des colonnes non configurées prend par défaut la valeur [INF_MIN,INF_MAX), conformément au principe de correspondance de la clé primaire la plus à gauche.

  • Si seul begin ou end est configuré, la plage de données exportées sera [begin, INF_MAX) ou [INF_MIN, end).

  • S'il n'y a qu'une seule colonne de clé primaire, les valeurs begin et end suivent la règle d'intervalle fermé à gauche et ouvert à droite pour l'exportation des données.

  • En présence de plusieurs colonnes de clé primaire, la dernière suit la règle d'intervalle fermé à gauche et ouvert à droite, tandis que les autres colonnes de clé primaire utilisent un intervalle fermé des deux côtés.

Par exemple, pour extraire des données d'une table Tablestore comportant trois colonnes de clé primaire [Hundreds, Tens,Ones], dont les valeurs vont de (0,0,0)(0,0,1)(0,0,2)(0,0,3)......(9,9,8)(9,9,9), soit 1 000 lignes au total. Voici les configurations begin et end correspondantes.

  • Exemple 1 : Extraction des données où Hundreds varie entre [3, 5] et Tens entre [4, 6]. Les clés primaires extraites incluent (3,4,0)(3,4,1)...(4,4,0),(4,0,1)...(5,6,8)(5,6,9). La configuration est la suivante :

    "range": {
              "begin": [
                {"type":"INT", "value":"3"},  // Specify the minimum value of Hundreds.
                {"type":"INT", "value":"4"}  // Specify the minimum value of Tens.
              ],
              "end": [
                {"type":"INT", "value":"5"}, // Specify the maximum value of Hundreds.
                {"type":"INT", "value":"6"} // Specify the maximum value of Tens.
              ]
            }
  • Exemple 2 : Extraction des données où Hundreds varie entre [3, 5], Tens entre [4, 6], et Ones entre [5,7). Les clés primaires extraites incluent (3,4,5)(3,4,6)...(4,4,5),(4,4,6)...(5,6,5)(5,6,6). La configuration est la suivante :

    "range": {
              "begin": [
                {"type":"INT", "value":"3"},  // Specify the minimum value of Hundreds.
                {"type":"INT", "value":"4"},  // Specify the minimum value of Tens.
                {"type":"INT", "value":"5"}  // Specify the minimum value of Ones.
              ],
              "end": [
                {"type":"INT", "value":"5"}, // Specify the maximum value of Hundreds.
                {"type":"INT", "value":"6"}, // Specify the maximum value of Tens.
                {"type":"INT", "value":"7"}  // Specify the maximum value of Ones.
              ]
            }

Non

(INF_MIN, INF_MAX)

split

Il s'agit d'un paramètre de configuration avancé permettant de définir des découpages personnalisés. Son usage n'est généralement pas recommandé dans les scénarios courants.

En configurant le paramètre split, vous définissez des plages de données personnalisées pour le sharding. Cette option est particulièrement utile lorsque des points chauds apparaissent dans le stockage des données Tablestore. Voici un exemple de configuration de tâche :

{
  "range": {
    "begin": [{"type": "INF_MIN"}],
    "end":   [{"type": "INF_MAX"}],
    "split": [
      {"type": "STRING","value": "1"},
      {"type": "STRING","value": "2"},
      {"type": "STRING","value": "3"},
      {"type": "STRING","value": "4"},
      {"type": "STRING","value": "5"}
    ]
  }

Lors de l'exécution, les données sont divisées en 6 segments lus simultanément. Il est conseillé que le nombre de segments dépasse le niveau de concurrence de la tâche.

// Segment 1
[MIN, 1)
// Segment 2
[1, 2)
// Segment 3
[2, 3)
// Segment 4
[3, 4)
// Segment 5
[4, 5)
// Segment 6
[5, MAX)

Non

En l'absence de configuration du paramètre split, une logique de découpage automatique s'applique.

Cette logique automatique identifie les valeurs minimale et maximale de la Partition Key et effectue une segmentation uniforme.

La Partition Key accepte les types entier et chaîne. Les clés entières utilisent la division entière pour la segmentation, tandis que les clés de type chaîne se basent sur le code Unicode du premier caractère.

Paramètres du mode ligne pour la lecture de tables de séries temporelles

Paramètre

Description

Obligatoire

Valeur par défaut

column

column est un tableau dont chaque élément représente une colonne. Vous pouvez configurer des colonnes constantes et des colonnes classiques.

Pour les colonnes constantes, configurez les champs suivants :

  • type : Le type de valeur de la colonne. Ce champ est obligatoire. Types pris en charge : string, int, double, bool et binary.

  • value : La valeur de la colonne. Ce champ est obligatoire.

Pour les colonnes classiques, configurez les champs suivants :

  • name : Le nom de la colonne. Ce champ est obligatoire. Les champs prédéfinis suivants sont disponibles :

    • Le nom de la mesure de la série temporelle est identifié par _m_name. Le type de données est String.

    • La source de données de la série temporelle est identifiée par _data_source. Le type de données est String.

    • Les tags de la série temporelle sont identifiés par _tags. Le type de données est String.

    • L'horodatage de la série temporelle est identifié par _time. Le type de données est Long.

  • is_timeseries_tag : Indique si la colonne correspond à une paire clé-valeur au sein du champ tags. Ce champ est facultatif. Valeur par défaut : false.

  • type : Le type de valeur de la colonne. Ce champ est facultatif. Valeur par défaut : string. Types pris en charge : string, int, double, bool et binary.

Exemple de script pour la lecture de quatre colonnes :

"column": [
  {
    "name": "_m_name"               // Measurement name field of the time series
  },
  {
    "name": "tag_key",                // Value corresponding to tag_key in the tag field of the time series
    "is_timeseries_tag":"true"
  },
  {
    "name": "string_column",        // Column named string_column in fields
    "type":"string"                    // with data type string
  },
  {
    "value": "constant_value",        // Constant column with a fixed value of "constant_value"
    "type":"string"
  }
],

Oui

N/A

measurementName

Le nom de la mesure de la série temporelle à lire. En l'absence de configuration de ce paramètre, les données de toute la table sont lues.

Non

N/A

timeRange

La plage temporelle des données à lire. L'intervalle est [begin, end), fermé à gauche et ouvert à droite, et begin doit être strictement inférieur à end. L'unité de l'horodatage est la microseconde. Le format est le suivant :

"timeRange":{
    // begin: optional, defaults to 0, valid range is 0~LONG_MAX
    "begin":1400000000000,
    // end: optional, defaults to Long Max (9223372036854775807L), valid range is 0~LONG_MAX
    "end"  :1600000000000
},

Non

Toutes les versions

Paramètres du mode colonne pour la lecture de tables à colonnes larges

Paramètre

Description

Obligatoire

Valeur par défaut

column

Spécifie les colonnes à exporter. Seul le mode colonne prend en charge les colonnes classiques.

Format :

"column": [
    {"name1":"{your column name1}"},
    {"name2":"{your column name2}"}
],
Remarque
  • Les colonnes constantes ne sont pas prises en charge en mode colonne.

  • Impossible de spécifier les colonnes de clé primaire. Le quadruplet exporté inclut par défaut la clé primaire complète.

  • Les doublons dans la spécification des colonnes sont interdits.

Oui

Toutes les colonnes

range

La plage de données à lire. L'intervalle est [begin, end), fermé à gauche et ouvert à droite, avec les règles suivantes :

  • Si begin est inférieur à end, la lecture des données s'effectue par ordre croissant.

  • Si begin est supérieur à end, la lecture des données s'effectue par ordre décroissant.

  • begin et end ne peuvent pas être égaux.

Les types suivants sont acceptés pour le champ type :

  • string

  • int

  • binary : La valeur est transmise sous forme de chaîne binaire encodée en Base64.

  • INF_MIN : Représente la valeur minimale possible.

  • INF_MAX : Représente la valeur maximale possible.

Format :

"range":{
    // Optional, defaults to reading from the smallest value
    // The input can be an empty array, a PK prefix, or a complete PK. When reading data in forward order, PK suffix is padded with INF_MIN by default; in reverse order, INF_MAX
    // Examples:
    // If the table has 2 PKs with types string and int respectively, the following 3 inputs are all valid:
    //1. Read from the beginning of the table -> to the end of the table:
    //"begin":[],"end":[],
    //2. Read from first PK value "a" and the minimum of the second PK -> to first PK value "b" and the maximum of the second PK:
    //"begin":[{"type":"string", "value":"a"}],"end":[{"type":"string", "value":"b"}],
    //3. Read from first PK value "a" and the minimum of the second PK -> to the end of the table:
    //"begin":[{"type":"string", "value":"a"},{"type":"INF_MIN"}],"end":[],    
    //
    // Binary type PK columns are special because JSON does not support direct binary input, so the system requires:
    // To pass binary data, you must use (Java) Base64.encodeBase64String method to convert the binary into a visible string, then fill this string into the value
    // Example (Java):
    //   byte[] bytes = "hello".getBytes();  # Construct binary data, here using the byte value of the string hello
    //   String inputValue = Base64.encodeBase64String(bytes) # Call the Base64 method to convert binary into a visible string
    //   After executing the above code, inputValue will be "aGVsbG8="
    //   Final configuration: {"type":"binary","value" : "aGVsbG8="}

    "begin":[{"type":"string", "value":"a"},{"type":"INF_MIN"}],

    // Defaults to reading until the largest value
    // The input can be an empty array, a PK prefix, or a complete PK. When reading data in forward order, PK suffix is padded with INF_MAX by default; in reverse order, INF_MIN
    // Optional
    "end":[{"type":"string", "value":"g"},{"type":"INF_MAX"}],

    // When the data volume is large, concurrent export needs to be enabled. Split can divide the data in the current range into multiple concurrent tasks based on split points
    // Optional
    //   1. The input values in split can only be the first column of the PK (partition key), and the value type must be consistent with the PartitionKey
    //   2. The value range must be between begin and end
    //   3. The values within split must be in ascending or descending order according to the forward/reverse order relationship of begin and end
    "split":[{"type":"string", "value":"b"}, {"type":"string", "value":"c"}]
},

Non

Toutes les données

timeRange

La plage temporelle des données à lire. L'intervalle est [begin, end), fermé à gauche et ouvert à droite, et begin doit être strictement inférieur à end. L'unité de l'horodatage est la microseconde.

Format :

"timeRange":{
    // begin: Optional. Default value: 0. Value range: 0 to LONG_MAX.
    "begin":1400000000000,
    // end: Optional. Default value: Long Max (9223372036854775807L). Value range: 0 to LONG_MAX.
    "end"  :1600000000000
},

Non

Toutes les versions

maxVersion

Le nombre maximal de versions de données à requêter. La plage de valeurs s'étend de 1 à INT32_MAX.

Non

Toutes les versions

Tablestore est un service de stockage NoSQL basé sur le système de fichiers distribué Apsara d'Alibaba Cloud. La source de données Tablestore dans DataWorks permet une synchronisation bidirectionnelle des données avec les tables Tablestore.

Limites

  • Les plugins Tablestore Reader et Writer assurent respectivement la lecture et l'écriture dans Tablestore. Ils opèrent sur les tables à colonnes larges et les tables de séries temporelles selon deux modes : mode ligne et mode colonne.

    • mode colonne : Dans le modèle multiversion de Tablestore, les données s'organisent selon une structure à trois niveaux : Row > Column > Version. Une ligne peut contenir un nombre quelconque de colonnes, dont les noms ne sont pas fixes. Chaque colonne peut comporter plusieurs versions, chacune associée à un horodatage spécifique qui sert également de numéro de version. En mode colonne, les données sont exportées sous forme de quadruplet : (valeur de clé primaire, nom de colonne, horodatage, valeur de colonne). L'importation des données en mode colonne utilise également ce format de quadruplet : (valeur de clé primaire, nom de colonne, horodatage, valeur de colonne).

    • mode ligne : Ce mode exporte chaque enregistrement mis à jour sous forme de ligne, au format (valeur de clé primaire, valeurs de colonnes).

      En mode ligne, chaque ligne de données correspond à une ligne unique dans la table Tablestore. Les données écrites en mode ligne comprennent à la fois les valeurs des colonnes de clé primaire et celles des colonnes d'attributs.

  • Les colonnes Tablestore se composent de colonnes de clé primaire primaryKey et de colonnes d'attributs column. L'ordre des colonnes sources doit correspondre exactement à celui des colonnes de clé primaire et d'attributs dans la table Tablestore de destination. Dans le cas contraire, une erreur de mappage de colonnes survient.

  • Tablestore Reader divise la plage de données d'une table en N tâches en fonction du niveau de concurrence spécifié, N. Un thread dédié de Tablestore Reader exécute chaque tâche.

  • Les tables externes MaxCompute ne peuvent pas lire directement les colonnes contenant des types de données mixtes depuis Tablestore, par exemple une colonne renfermant à la fois des valeurs STRING et DOUBLE. Si votre table Tablestore contient de telles colonnes, l'importation de données via une table externe MaxCompute échoue. Comme solution de contournement, utilisez la fonctionnalité de synchronisation par lots mono-table de DataWorks Data Integration pour synchroniser les données de Tablestore vers MaxCompute.

    Lorsque vous utilisez la synchronisation par lots mono-table, le groupe de ressources Data Integration doit disposer d'un accès réseau au VPC hébergeant l'instance Tablestore afin de lire les données et d'exécuter la tâche de synchronisation. Cette solution ne garantit pas une compatibilité totale pour les données de types mixtes. Vous devrez peut-être convertir ou filtrer les types de données via le mappage de colonnes pendant la synchronisation. L'utilisation d'un groupe de ressources Data Integration entraîne des frais supplémentaires.

Types de colonnes pris en charge

Tablestore Reader et Tablestore Writer prennent en charge tous les types de données Tablestore. Le tableau suivant présente les mappages de types compatibles.

Catégorie de type

Type de données Tablestore

Entier

INTEGER

Virgule flottante

DOUBLE

Chaîne

STRING

Booléen

BOOLEAN

Binaire

BINARY

Remarque
  • Tablestore ne prend pas nativement en charge le type de données date. La couche applicative utilise généralement une valeur Long pour stocker l'horodatage Unix.

  • En mode script, configurez le type de données INTEGER sous la forme INT. DataWorks le convertit automatiquement en type INTEGER. Si vous configurez directement le type comme INTEGER, une erreur apparaît dans les journaux et la tâche échoue.

Ajouter une source de données

Avant de développer une tâche de synchronisation dans DataWorks, ajoutez la source de données requise en suivant les instructions décrites dans Configuration de la source de données. Vous pouvez consulter les descriptions des paramètres dans la console DataWorks pour comprendre la signification de chaque paramètre lors de l'ajout d'une source de données.

Instructions

  1. Lisez la documentation anglaise pour comprendre CE QUI doit être communiqué.

  2. Rédigez le document français EN PARTANT DE ZÉRO — oubliez la structure des phrases anglaises.

  3. Conservez exactement tout le formatage markdown, les blocs de code, les liens et les images.

  4. Balises xref (<a data-tag="xref" ...>texte</a>) — conservez la balise ENTIERE avec tous ses attributs dans l'ordre et la casse d'origine, traduisez UNIQUEMENT le texte visible entre > et .

  5. Appliquez strictement toutes les règles spécifiques à la langue.

  6. Appliquez les règles relatives aux stopwords avec une tolérance zéro.

  7. Utilisez l'impératif dans les étapes numérotées et les listes à puces procédurales.

  8. Assurez la cohérence terminologique — même terme = même traduction partout.

  9. Variez les débuts de phrase dans les listes et tableaux — aucun début de phrase répété plus de 3 fois.

  10. Retournez UNIQUEMENT le document markdown en français, sans explication.

    Annexe 2 : Exemples de scripts Writer et description des paramètres

    Configurer une tâche de synchronisation par lots à l'aide de l'éditeur de code

    Pour configurer une tâche de synchronisation par lots via l'éditeur de code, vous devez définir les paramètres appropriés dans le script en respectant le format de script unifié. Pour plus d'informations, consultez Configuration en mode script. Les sections suivantes détaillent les paramètres à configurer pour les sources de données lors de la configuration d'une tâche de synchronisation par lots avec l'éditeur de code.

    Exemples de scripts Writer

    Configuration en mode ligne pour l'écriture dans des tables à colonnes larges

    { "type":"job", "version":"2.0",// The version number. "steps":[ { "stepType":"stream", "parameter":{}, "name":"Reader", "category":"reader" }, { "stepType":"ots",// The plugin name. "parameter":{ "datasource":"",// The data source. "table":"",// The table name. "newVersion":"true",// Use the new version of otswriter. "mode": "normal",// Write data in row mode. "isTimeseriesTable":"false",// Configure this table as a wide-column table (not a time-series table). "primaryKey" : [// The primary key information of the Tablestore table. {"name":"gid", "type":"INT"}, {"name":"uid", "type":"STRING"} ], "column" : [// The columns. {"name":"col1", "type":"INT"}, {"name":"col2", "type":"DOUBLE"}, {"name":"col3", "type":"STRING"}, {"name":"col4", "type":"STRING"}, {"name":"col5", "type":"BOOL"} ], "writeMode" : "PutRow" // The write mode. }, "name":"Writer", "category":"writer" } ], "setting":{ "errorLimit":{ "record":"0"// The error count. }, "speed":{ "throttle":true,// When throttle is set to false, the mbps parameter does not take effect, indicating no throttling. When throttle is set to true, throttling is enabled. "concurrent":1, // The concurrency. "mbps":"12"// The throttling speed. 1 mbps = 1 MB/s. } }, "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] } }

    Configuration en mode ligne pour l'écriture dans des tables de séries temporelles

    { "type":"job", "version":"2.0",// The version number. "steps":[ { "stepType":"stream", "parameter":{}, "name":"Reader", "category":"reader" }, { "stepType":"ots",// The plugin name. "parameter":{ "datasource":"",// The data source. "table": "testTimeseriesTableName01", "mode": "normal", "newVersion": "true", "isTimeseriesTable":"true", "timeunit":"microseconds", "column": [ { "name": "_m_name" }, { "name": "_data_source", }, { "name": "_tags", }, { "name": "_time", }, { "name": "string_1", "type":"string" }, { "name":"tag3", "is_timeseries_tag":"true", } ] }, "name":"Writer", "category":"writer" } ], "setting":{ "errorLimit":{ "record":"0"// The error count. }, "speed":{ "throttle":true,// When throttle is set to false, the mbps parameter does not take effect, indicating no throttling. When throttle is set to true, throttling is enabled. "concurrent":1, // The concurrency. "mbps":"12"// The throttling speed. 1 mbps = 1 MB/s. } }, "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] } }

    Configuration en mode colonne pour l'écriture dans des tables à colonnes larges

    { "type":"job", "version":"2.0",// The version number. "steps":[ { "stepType":"stream", "parameter":{}, "name":"Reader", "category":"reader" }, { "stepType":"ots",// The plugin name. "parameter":{ "datasource":"",// The data source. "table":"", "newVersion":"true", "mode":"multiVersion", "primaryKey" : [ "gid", "uid" ] }, "name":"Writer", "category":"writer" } ], "setting":{ "errorLimit":{ "record":"0"// The error count. },x` "speed":{ "throttle":true,// When throttle is set to false, the mbps parameter does not take effect, indicating no throttling. When throttle is set to true, throttling is enabled. "concurrent":1, // The concurrency. "mbps":"12"// The throttling speed. 1 mbps = 1 MB/s. } }, "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] } }

    Paramètres courants du script Writer

    Paramètre

    Description

    Obligatoire

    Valeur par défaut

    datasource

    Nom de la source de données. Le mode script permet d'ajouter des sources de données. La valeur de ce paramètre doit correspondre exactement au nom de la source de données ajoutée.

    Oui

    N/A

    endPoint

    Endpoint (adresse du service) du serveur Tablestore. Pour plus d'informations, consultez Endpoints.

    Oui

    N/A

    accessId

    AccessKey ID de l'instance Tablestore.

    Oui

    N/A

    accessKey

    AccessKey Secret de l'instance Tablestore.

    Oui

    N/A

    instanceName

    Nom de l'instance Tablestore. Une instance constitue l'entité utilisée pour gérer le service Tablestore.

    Après l'activation du service Tablestore, vous devez créer une instance dans la console, puis créer et gérer des tables au sein de cette instance. L'instance représente l'unité de base pour la gestion des ressources Tablestore. Le contrôle d'accès et la comptabilisation des ressources s'effectuent au niveau de l'instance.

    Oui

    N/A

    table

    Nom de la table de destination pour l'écriture des données. Une seule table peut être spécifiée. Tablestore ne prend pas en charge la synchronisation multi-tables.

    Oui

    N/A

    newVersion

    Indique la version du plugin Tablestore Writer.

    • false : Version héritée de Tablestore Writer, qui prend uniquement en charge l'écriture en mode ligne vers des tables à colonnes larges.

    • true : Nouvelle version de Tablestore Writer, compatible avec le mode ligne, le mode colonne, les tables de séries temporelles et les tables à colonnes larges. Elle inclut également la fonctionnalité de clé primaire à incrémentation automatique.

    La nouvelle version de Tablestore Writer offre non seulement des fonctionnalités supplémentaires, mais consomme aussi moins de ressources système. Nous vous recommandons d'utiliser cette nouvelle version.

    Le plugin de la nouvelle version assure une rétrocompatibilité avec la configuration de la version héritée. Ajoutez simplement le paramètre newVersion=true aux tâches existantes pour qu'elles s'exécutent correctement.

    Oui

    false

    mode

    Définit le mode d'écriture des données. Deux modes sont disponibles :

    • normal : Écrit les données au format standard (mode ligne).

    • multiVersion : Écrit les données au format multiversion (mode colonne).

    Ce paramètre n'est pris en compte que si newVersion:true est configuré.

    L'ancienne version de Tablestore Writer ignore le paramètre mode et ne permet l'écriture qu'en mode ligne.

    Non

    normal

    isTimeseriesTable

    Indique si la table de données est une table de séries temporelles.

    • false : Il s'agit d'une table à colonnes larges standard.

    • true : Il s'agit d'une table de séries temporelles.

    Ce paramètre n'est effectif que lorsque newVersion:true & mode:normal est configuré (le mode colonne n'est pas compatible avec les tables de séries temporelles).

    Non

    false

    Paramètres supplémentaires du script Writer

    Tablestore Writer permet l'écriture en mode ligne vers des tables à colonnes larges, en mode ligne vers des tables de séries temporelles, ainsi qu'en mode colonne vers des tables à colonnes larges. Chaque mode dispose de paramètres supplémentaires spécifiques.

    Paramètres du mode ligne pour l'écriture dans des tables à colonnes larges

    Paramètre

    Description

    Obligatoire

    Valeur par défaut

    primaryKey

    Informations sur la clé primaire de la table Tablestore, décrites sous forme de tableau JSON. Tablestore étant un système NoSQL, vous devez spécifier les noms des colonnes lors de l'importation des données par Tablestore Writer.

    Le système de synchronisation des données prenant en charge la conversion de types, Tablestore Writer convertit automatiquement les données source dont le type n'est ni STRING ni INT. Exemple de configuration :

    "primaryKey" : [
        {"name":"gid", "type":"INT"},
        {"name":"uid", "type":"STRING"}
                     ],
    Remarque

    La PrimaryKey de Tablestore accepte uniquement les types STRING et INT. Par conséquent, Tablestore Writer n'accepte que ces deux types.

    Oui

    N/A

    column

    Ensemble des noms de colonnes à synchroniser depuis la table configurée, décrit sous forme de tableau JSON.

    Exemple de configuration :

    "column" : [
         {"name":"col1", "type":"INT"},
         {"name":"col2", "type":"DOUBLE"},
         {"name":"col3", "type":"STRING"},
         {"name":"col4", "type":"BINARY"},
         {"name":"col5", "type":"BOOL"}
                  ],

    Le champ name désigne la colonne Tablestore cible pour l'écriture, tandis que le champ type précise le type de données à écrire. Tablestore prend en charge les types STRING, INT, DOUBLE, BOOL et BINARY.

    Remarque

    Les constantes, fonctions ou expressions personnalisées ne sont pas prises en charge lors de l'écriture.

    Oui

    N/A

    writeMode

    Mode d'écriture des données dans Tablestore. Les deux modes suivants sont disponibles :

    • PutRow : Correspond à l'API Tablestore PutRow. Ce mode insère des données dans la ligne spécifiée. Si la ligne n'existe pas, elle est créée. Si elle existe déjà, son contenu est écrasé.

    • UpdateRow : Correspond à l'API Tablestore UpdateRow. Ce mode met à jour les données de la ligne spécifiée. Si la ligne n'existe pas, elle est créée. Si elle existe, les valeurs des colonnes indiquées sont ajoutées, modifiées ou supprimées selon le contenu de la requête.

    Oui

    N/A

    enableAutoIncrement

    Indique si l'écriture de données est autorisée dans une table Tablestore contenant des colonnes de clé primaire à incrémentation automatique.

    • true : Le plugin détecte automatiquement les informations relatives aux colonnes à incrémentation automatique de la table de destination et intègre ces colonnes lors de l'écriture des données (il n'est pas nécessaire de configurer le nom de la colonne à incrémentation automatique).

    • false : Une erreur est générée lors de toute tentative d'écriture dans une table comportant des colonnes de clé primaire à incrémentation automatique.

    Non

    false

    requestTotalSizeLimitation

    Ce paramètre limite la taille d'une seule ligne de données lors de l'écriture dans Tablestore. La valeur attendue est numérique.

    Non

    1MB

    attributeColumnSizeLimitation

    Ce paramètre limite la taille d'une colonne d'attribut individuelle lors de l'écriture dans Tablestore. La valeur attendue est numérique.

    Non

    2MB

    primaryKeyColumnSizeLimitation

    Ce paramètre limite la taille d'une colonne de clé primaire individuelle lors de l'écriture dans Tablestore. La valeur attendue est numérique.

    Non

    1KB

    attributeColumnMaxCount

    Ce paramètre limite le nombre de colonnes d'attributs lors de l'écriture dans Tablestore. La valeur attendue est numérique.

    Non

    1 024

    Paramètres du mode ligne pour l'écriture dans des tables de séries temporelles

    Paramètre

    Description

    Obligatoire

    Valeur par défaut

    column

    Chaque élément du tableau column correspond à un champ des données de série temporelle. Chaque élément admet les paramètres suivants :

    • name : Nom de la colonne. Ce champ est obligatoire. Les champs prédéfinis suivants sont disponibles :

      • Le nom de la mesure de la série temporelle est identifié par _m_name. Le type de données est String.

      • La source de données de la série temporelle est identifiée par _data_source. Le type de données est String.

      • Les tags de la série temporelle sont identifiés par _tags. Le type de données est String. Le format de la chaîne est ["tagKey1=value1","tagKey2=value2"].

      • L'horodatage de la série temporelle est identifié par _time. Le type de données est Long. L'unité par défaut est la microseconde.

    • is_timeseries_tag : Indique si la colonne correspond à une paire clé-valeur au sein du champ tags. Ce champ est facultatif. Valeur par défaut : false.

    • type : Type de valeur de la colonne. Ce champ est facultatif. Valeur par défaut : string. Types pris en charge : string, int, double, bool et binary.

    Étant donné que le nom de la mesure et l'horodatage des données de série temporelle ne peuvent pas être vides, vous devez configurer les champs _m_name et _time.

    Exemple : Un enregistrement de données à écrire contient six champs :

    mName1    source1    ["tag1=A","tag2=B"]    1677763080000000    field_value     C

    Utilisez la configuration suivante :

    "column": [
          {
            "name": "_m_name"
          },
          {
            "name": "_data_source",
          },
          {
            "name": "_tags",
          },
          {
            "name": "_time",
          },
          {
            "name": "string_1",
            "type":"string"
          },
          {
            "name":"tag3",
            "is_timeseries_tag":"true",
          }
        ],

    Oui

    N/A

    timeunit

    Unité du champ d'horodatage _time. Valeurs acceptées : NANOSECONDS, MICROSECONDS, MILLISECONDS, SECONDS et MINUTES.

    Non

    MICROSECONDS

    Paramètres du mode colonne pour l'écriture dans des tables à colonnes larges

    Paramètre

    Description

    Obligatoire

    Valeur par défaut

    primaryKey

    Colonnes de clé primaire de la table.

    Afin de réduire la charge de configuration, il n'est pas nécessaire de préciser la position de primaryKey dans l'enregistrement (ligne). Toutefois, le format de l'enregistrement doit rester fixe : primaryKey doit se trouver au début de la ligne, suivi de primaryKey puis de columnName. Le format de l'enregistrement est le suivant : {pk0,pk1...}, {columnName}, {timestamp}, {value}.

    Par exemple, pour les 9 enregistrements de données suivants :

    1,pk1,row1,1677699863871,value_0_0
                          
    Exemple de configuration :
    1,pk1,row2,1677699863871,value_0_1
    1,pk1,row3,1677699863871,value_0_2
    2,pk2,row1,1677699863871,value_1_0
    2,pk2,row2,1677699863871,value_1_1
    2,pk2,row3,1677699863871,value_1_2
    3,pk3,row1,1677699863871,value_2_0
    3,pk3,row2,1677699863871,value_2_1
    3,pk3,row3,1677699863871,value_2_2
    "primaryKey" : [
        "gid",
        "uid"
        ],

    Résultat de l'écriture au format de ligne large :

    gid     uid     row1        row2        row3
    1        pk1        value_0_0    value_0_1    value_0_2
    2        pk2        value_1_0    value_1_1    value_1_2
    3        pk3        value_2_0    value_2_1    value_2_2

    Oui

    N/A

    columnNamePrefixFilter

    Filtre de préfixe de nom de colonne.

    Pour les données importées depuis HBase, cf et qulifier forment ensemble le columnName. Cependant, Tablestore ne prenant pas en charge cf, il est nécessaire de filtrer ce préfixe cf.

    Exemple de configuration : "columnNamePrefixFilter":"cf:"

    Remarque
    • Ce paramètre est facultatif. S'il n'est pas spécifié ou si sa valeur est une chaîne vide, aucun filtrage de nom de colonne n'est appliqué.

    • Si la colonne columnName des données ajoutées via Data Integration ne commence pas par le préfixe spécifié, l'enregistrement est envoyé au collecteur de données incorrectes.

    Non

    N/A

    Développer une tâche de synchronisation des données

    Pour connaître le point d'entrée et la procédure de configuration d'une tâche de synchronisation, reportez-vous aux guides de configuration suivants.

    Directives pour la configuration d'une tâche de synchronisation par lots sur table unique

    FAQ

    • Q : Comment configurer Tablestore Writer pour écrire des données dans une table de destination contenant des colonnes de clé primaire à incrémentation automatique ?

      1. La configuration de Tablestore Writer doit respecter les deux exigences suivantes :

        "newVersion": "true",
        "enableAutoIncrement": "true",
      2. Ne configurez pas le nom de la colonne de clé primaire à incrémentation automatique dans Tablestore Writer.

      3. La somme du nombre d'entrées primaryKey et du nombre d'entrées column configurées dans Tablestore Writer doit être égale au nombre de colonnes présentes dans les données du Tablestore Reader en amont.

    • Q : Dans la configuration du modèle de séries temporelles, comment interpréter les champs _tag et is_timeseries_tag ?

      Exemple : Un enregistrement de données comporte trois tags : [phone=Xiaomi, RAM=8G, camera=Leica].

      • Exemple d'exportation de données (Tablestore Reader)

        • Pour fusionner les tags ci-dessus en une seule colonne lors de l'exportation, utilisez la configuration suivante :

          "column": [
                {
                  "name": "_tags",
                }
              ],

          DataWorks exporte les tags sous forme d'une colonne unique de données au format suivant :

          ["phone=xiaomi","camera=LEICA","RAM=8G"]
        • Pour exporter le tag phone et le tag camera dans des colonnes distinctes, utilisez la configuration suivante :

          "column": [
                {
                  "name": "phone",
                  "is_timeseries_tag":"true",
                },
                {
                  "name": "camera",
                  "is_timeseries_tag":"true",
                }
              ],

          DataWorks exporte alors deux colonnes de données au format suivant :

          xiaomi, LEICA
      • Exemple d'importation de données (Tablestore Writer)

        La source de données en amont (Reader) contient deux colonnes de données :

        • La première colonne contient : ["phone=xiaomi","camera=LEICA","RAM=8G"].

        • La seconde colonne contient : 6499.

        Pour ajouter ces deux colonnes au champ tags, le format attendu du champ tags après écriture est le suivant : Format Utilisez la configuration suivante :

        "column": [
              {
                "name": "_tags",
              },
              {
                "name": "price",
                "is_timeseries_tag":"true",
              },
            ],
        • La configuration de la première colonne importe l'ensemble ["phone=xiaomi","camera=LEICA","RAM=8G"] dans le champ tags.

        • La configuration de la seconde colonne importe individuellement price=6499 dans le champ tags.