Tous les produits
Search
Centre de documentation

DataWorks:OSS

Dernière mise à jour :Aug 31, 2026

La source de données OSS permet la lecture et l'écriture de données sur OSS. Cette rubrique explique comment DataWorks prend en charge la synchronisation des données OSS.

Types de champs pris en charge et limitations

Lecture des données par lots

OSS Reader lit les données depuis OSS et les convertit dans un format exploitable par Data Integration. OSS étant un service de stockage de données non structurées, le lecteur offre les fonctionnalités suivantes.

Pris en charge

Non pris en charge

  • Prend en charge les fichiers TXT, qui doivent respecter un schéma de table bidimensionnelle.

  • Prend en charge les fichiers de type CSV avec un délimiteur personnalisé.

    Remarque

    Les formats texte (TXT et CSV) prennent en charge la compression gzip, bzip2 et zip.

    Vous ne pouvez pas regrouper plusieurs fichiers dans une seule archive compressée.

  • Prend en charge les fichiers aux formats ORC et Parquet.

  • Prend en charge la lecture de divers types de données (représentés sous forme de STRING), l'élagage des colonnes et les constantes de colonne.

  • Prend en charge les lectures récursives et le filtrage par nom d'objet.

  • Prend en charge les lectures simultanées depuis plusieurs objets.

  • Le lecteur ne peut pas lire un seul objet (fichier) de manière concurrente à l'aide de plusieurs threads.

  • Un seul objet compressé ne prend pas en charge les lectures multi-threads simultanées.

Important
  • Lorsque vous préparez des données dans OSS, les fichiers CSV doivent être conformes au format CSV standard. Par exemple, vous devez échapper tout guillemet double (") dans une colonne en le remplaçant par deux guillemets doubles (""), sinon le fichier risque d'être fractionné incorrectement. Si un fichier contient plusieurs délimiteurs, nous vous recommandons d'utiliser le type texte.

  • OSS est une source de données non structurée qui stocke des données de type fichier. Avant de synchroniser les données, vérifiez que la structure des champs des données à synchroniser correspond à vos attentes. De même, si la structure des données d'une source non structurée change, vous devez confirmer à nouveau la structure des champs dans la configuration de la tâche. Dans le cas contraire, des erreurs de synchronisation des données peuvent se produire.

Écriture des données par lots

OSS Writer convertit les données du protocole Data Integration en fichiers texte sur OSS. OSS étant un service de stockage de données non structurées, l'outil d'écriture offre les fonctionnalités suivantes.

Pris en charge

Non pris en charge

  • Seuls les fichiers texte peuvent être écrits. Les données BLOB telles que les vidéos et les images ne sont pas prises en charge. Les fichiers texte doivent respecter un schéma de table bidimensionnelle.

  • Prend en charge les fichiers de type CSV avec un délimiteur personnalisé.

  • Prend en charge les formats ORC et Parquet.

    Remarque

    Le format de compression SNAPPY est pris en charge en mode script.

  • Prend en charge les écritures multi-threads, chaque thread écrivant dans un sous-fichier différent.

  • Prend en charge le roulement des fichiers. Lorsqu'un fichier dépasse une taille spécifiée, l'outil d'écriture bascule vers un nouveau fichier.

  • Un seul fichier ne prend pas en charge les écritures simultanées.

  • OSS ne fournit pas de types de données natifs. OSS Writer écrit toutes les données dans les objets OSS sous le type STRING.

  • Si la classe de stockage du bucket OSS est Cold Archive Storage, les opérations d'écriture ne sont pas prises en charge.

  • Un seul objet (fichier) ne peut pas dépasser 100 Go.

Catégorie

Type de colonne Data Integration

Entier

LONG

Chaîne

STRING

Virgule flottante

DOUBLE

Booléen

BOOLEAN

Date et heure

DATE

Écriture en temps réel

  • Prend en charge les capacités d'écriture en temps réel.

  • L'écriture en temps réel sur une seule table vers des lacs de données est prise en charge : Hudi (0,12.x), Paimon et Iceberg.

Créer une source de données

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

Remarque

Développement de tâches de synchronisation des données

Pour obtenir des informations sur le point d'entrée et la procédure de configuration d'une tâche de synchronisation, consultez les guides de configuration suivants.

Guide de configuration des tâches de synchronisation par lots sur une seule table

Guide de configuration des tâches de synchronisation en temps réel sur une seule table

Pour la procédure, consultez Configuration des tâches de synchronisation en temps réel sur une seule table.

Guide de configuration de la synchronisation complète de la base de données

Pour la procédure, consultez Fonctionnalités des tâches de synchronisation par lots complète de la base de données et Fonctionnalités des tâches de synchronisation en temps réel complète de la base de données.

FAQ

Existe-t-il une limite au nombre de fichiers lors de la lecture des fichiers OSS ?

Comment gérer les données erronées lors de la lecture de fichiers CSV avec des délimiteurs multicaractères ?

Annexe : Exemples de scripts et description des paramètres

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

Si vous souhaitez configurer une tâche de synchronisation par lots à l'aide de l'éditeur de code, vous devez configurer les paramètres associés dans le script selon les exigences de format de script unifié. Pour plus d'informations, consultez Configuration en mode script. Les informations suivantes décrivent les paramètres que vous devez configurer pour les sources de données lors de la configuration d'une tâche de synchronisation par lots à l'aide de l'éditeur de code.

Exemple de script Reader : Exemple générique

L'exemple suivant présente un script générique pour OSS Reader.

{ "type":"job", "version":"2.0",//The version number. "steps":[ { "stepType":"oss",//The plug-in name. "parameter":{ "nullFormat":"",//The string that represents a null value. "compress":"",//The text compression type. "datasource":"",//The data source. "column":[//The columns. { "index":0,//The column index. "type":"string"//The data type. }, { "index":1, "type":"long" }, { "index":2, "type":"double" }, { "index":3, "type":"boolean" }, { "format":"yyyy-MM-dd HH:mm:ss", //The time format. "index":4, "type":"date" } ], "skipHeader":"",//CSV-like files may contain a header row. Set this parameter to skip the header. "encoding":"",//The encoding format. "fieldDelimiter":",",//The field delimiter. "fileFormat": "",//The text type. "object":[]//The object prefix. }, "name":"Reader", "category":"reader" }, { "stepType":"stream", "parameter":{}, "name":"Writer", "category":"writer" } ], "setting":{ "errorLimit":{ "record":""//The maximum number of error records allowed. }, "speed":{ "throttle":true,//If throttle is set to false, the mbps parameter does not take effect, which means throttling is disabled. If throttle is set to true, throttling is enabled. "concurrent":1 //The number of concurrent threads. "mbps":"12",//The throttling rate. 1 mbps = 1 MB/s. } }, "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] } }

Exemple de script Reader : Lire des fichiers ORC ou Parquet depuis OSS

OSS Reader lit les fichiers ORC ou Parquet depuis OSS en réutilisant HDFS Reader. En plus des paramètres existants d'OSS Reader, les paramètres étendus suivants sont ajoutés : Path (ORC) et FileFormat (ORC, Parquet) .

  • L'exemple suivant montre comment lire des fichiers ORC depuis OSS.

    {
    "stepType": "oss",
    "parameter": {
    "datasource": "",
    "fileFormat": "orc",
    "path": "/tests/case61/orc__691b6815_9260_4037_9899_****",
    "column": [
    {
    "index": 0,
    "type": "long"
    },
    {
    "index": "1",
    "type": "string"
    },
    {
    "index": "2",
    "type": "string"
    }
    ]
    }
    }
  • L'exemple suivant montre comment lire des fichiers Parquet depuis OSS.

    {
      "type":"job",
        "version":"2.0",
        "steps":[
        {
          "stepType":"oss",
          "parameter":{
            "nullFormat":"",
            "compress":"",
            "fileFormat":"parquet",
            "path":"/*",
            "parquetSchema":"message m { optional BINARY registration_dttm (UTF8); optional Int64 id; optional BINARY first_name (UTF8); optional BINARY last_name (UTF8); optional BINARY email (UTF8); optional BINARY gender (UTF8); optional BINARY ip_address (UTF8); optional BINARY cc (UTF8); optional BINARY country (UTF8); optional BINARY birthdate (UTF8); optional DOUBLE salary; optional BINARY title (UTF8); optional BINARY comments (UTF8); }",
            "column":[
              {
                "index":"0",
                "type":"string"
              },
              {
                "index":"1",
                "type":"long"
              },
              {
                "index":"2",
                "type":"string"
              },
              {
                "index":"3",
                "type":"string"
              },
              {
                "index":"4",
                "type":"string"
              },
              {
                "index":"5",
                "type":"string"
              },
              {
                "index":"6",
                "type":"string"
              },
              {
                "index":"7",
                "type":"string"
              },
              {
                "index":"8",
                "type":"string"
              },
              {
                "index":"9",
                "type":"string"
              },
              {
                "index":"10",
                "type":"double"
              },
              {
                "index":"11",
                "type":"string"
              },
              {
                "index":"12",
                "type":"string"
              }
            ],
            "skipHeader":"false",
            "encoding":"UTF-8",
            "fieldDelimiter":",",
            "fieldDelimiterOrigin":",",
            "datasource":"wpw_demotest_oss",
            "envType":0,
            "object":[
              "wpw_demo/userdata1.parquet"
            ]
          },
          "name":"Reader",
          "category":"reader"
        },
        {
          "stepType":"odps",
          "parameter":{
            "partition":"dt=${bizdate}",
            "truncate":true,
            "datasource":"0_odps_wpw_demotest",
            "envType":0,
            "column":[
              "id"
            ],
            "emptyAsNull":false,
            "table":"wpw_0827"
          },
          "name":"Writer",
          "category":"writer"
        }
      ],
        "setting":{
        "errorLimit":{
          "record":""
        },
        "locale":"zh_CN",
          "speed":{
          "throttle":false,
            "concurrent":2
        }
      },
      "order":{
        "hops":[
          {
            "from":"Reader",
            "to":"Writer"
          }
        ]
      }
    }

Paramètres du script Reader

Paramètre

Description

Obligatoire

Valeur par défaut

datasource

Le 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

S.O.

Object

Ce paramètre spécifie un ou plusieurs objets à synchroniser depuis OSS. Trois méthodes de configuration sont prises en charge : chemins explicites, chemins avec caractères génériques et chemins avec paramètres dynamiques.

1. Méthodes de configuration

  • Chemins explicites

    • Règle de base : le chemin commence à partir du répertoire racine du bucket et ne doit pas inclure le nom du bucket.

    • Spécification d'un fichier unique : saisissez le chemin complet du fichier. Exemple : my_folder/my_file.txt.

    • Spécification de plusieurs objets : séparez les chemins de plusieurs fichiers ou dossiers par des virgules (,). Exemple : folder_a/file1.txt, folder_a/file2.txt.

  • Chemins avec caractères génériques

    • Vous pouvez utiliser des caractères génériques pour faire correspondre plusieurs fichiers répondant à un modèle spécifique.

    • * : correspond à zéro ou plusieurs caractères arbitraires.

    • ? : correspond à exactement un caractère arbitraire.

    • Exemples :

      • abc*[0-9].txt peut correspondre à abc0.txt, abc10,txt, abc_test_9.txt, etc.

      • abc?.txt peut correspondre à abc1.txt, abcX.txt, etc.

  • Chemins avec paramètres dynamiques

    • Vous pouvez intégrer des paramètres de planification dans le chemin pour automatiser la synchronisation. Lors de l'exécution d'une tâche, les paramètres sont remplacés par leurs valeurs réelles.

    • Exemple : si vous définissez le chemin sur raw_data/${bizdate}/abc.txt, la tâche synchronise quotidiennement le dossier correspondant à la date métier.

    • Pour plus d'informations sur les paramètres de planification, consultez Sources et expressions des paramètres de planification.

Important
  • Utilisez les caractères génériques avec prudence. L'utilisation de caractères génériques (en particulier *) déclenche une analyse par parcours des chemins OSS. Lorsque le nombre de fichiers est élevé, cette opération peut consommer une quantité importante de mémoire et de temps, et peut même entraîner l'échec des tâches en raison d'erreurs de dépassement de mémoire. Nous vous recommandons de ne pas utiliser de caractères génériques trop larges dans les environnements de production. Si vous rencontrez ce problème, répartissez les fichiers dans différents répertoires avant la synchronisation.

  • Le système de synchronisation des données traite tous les objets synchronisés dans une seule tâche comme une seule table de données. Vous devez vous assurer que tous les objets respectent le même schéma.

2. Mécanisme de lecture simultanée et performances

La méthode de configuration détermine directement les performances de simultanéité de l'extraction des données :

  • Mode monothread : lorsque vous spécifiez un seul fichier explicite non compressé, la tâche extrait les données en mode monothread.

  • Mode multithread : lorsque vous spécifiez plusieurs fichiers explicites ou utilisez des caractères génériques qui correspondent à plusieurs fichiers, la tâche active automatiquement les lectures simultanées multithread pour améliorer considérablement l'efficacité de l'extraction. Vous pouvez configurer le nombre de threads simultanés dans Channel Control.

Oui

Aucune

parquetSchema

Ce paramètre est utilisé lors de la lecture des données OSS au format de fichier Parquet. Il prend effet uniquement lorsque fileFormat est défini sur parquet et spécifie la définition de type du stockage Parquet. Assurez-vous que la configuration globale respecte la syntaxe JSON après avoir spécifié parquetSchema.

message MessageTypeName {
required_or_optional, data_type, column_name;
......................;
}

Le format de configuration de parquetSchema est décrit comme suit :

  • Nom MessageType : spécifiez un nom.

  • Required ou optional : required indique que le champ ne peut pas être nul, et optional indique que le champ peut être nul. Nous vous recommandons de définir tous les champs sur optional.

  • Type de données : les fichiers Parquet prennent en charge les types BOOLEAN, Int32, Int64, Int96, FLOAT, DOUBLE, BINARY (utilisez BINARY pour les types de chaîne) et fixed_len_byte_array.

  • Chaque définition de colonne doit se terminer par un point-virgule, y compris la dernière ligne.

L'exemple suivant montre une configuration type.

"parquetSchema": "message m { optional int32 minute_id; optional int32 dsp_id; optional int32 adx_pid; optional int64 req; optional int64 res; optional int64 suc; optional int64 imp; optional double revenue; }"

Non

Aucune

column

La liste des champs à lire. type spécifie le type de données des données source, index spécifie le numéro de colonne (base zéro) dans le fichier texte auquel la colonne actuelle correspond, et value spécifie que la colonne actuelle est une constante. Au lieu de lire les données à partir du fichier source, le système génère automatiquement la colonne en fonction de la valeur spécifiée.

Par défaut, vous pouvez lire toutes les données en tant que type STRING. La configuration est la suivante.

"column": ["*"]

Vous pouvez spécifier les informations de champ de colonne. La configuration est la suivante.

"column":
        {
           "type": "long",
           "index": 0    //Récupère le champ INT de la première colonne du texte OSS.
        },
        {
           "type": "string",
           "value": "alibaba"  //Génère le champ de chaîne "alibaba" à partir de OSSReader en tant que champ actuel.
        }
Remarque

Pour les informations de colonne que vous spécifiez, le paramètre type est obligatoire, et vous devez spécifier soit index, soit value.

Oui

Toutes les données sont lues en tant que type STRING.

fileFormat

Le type de fichier. Type de fichier des objets OSS source. Par exemple, csv ou text. Les deux formats prennent en charge les délimiteurs personnalisés.

Oui

csv

fieldDelimiter

Le délimiteur de champ pour la lecture des données.

Remarque

Lorsque OSS Reader lit les données, vous devez spécifier un délimiteur de champ. Si vous n'en spécifiez pas, une virgule (,) est utilisée par défaut. La virgule (,) est également la valeur par défaut dans la configuration de la console.

Si le délimiteur est invisible, saisissez son encodage Unicode. Par exemple, \u001b ou \u007c.

Oui

,

lineDelimiter

Le délimiteur de ligne pour la lecture des données.

Remarque

Ce paramètre prend effet uniquement lorsque fileFormat est défini sur text.

Non

S.O.

compress

Le type de compression pour les fichiers texte. Par défaut, ce paramètre est laissé vide, ce qui indique que les données ne sont pas compressées. Valeurs valides : gzip, bzip2 et zip.

Non

Pas de compression

encoding

L'encodage utilisé pour lire les fichiers.

Non

utf-8

nullFormat

Les chaînes standard ne peuvent pas être utilisées pour définir null (pointeur nul) dans les fichiers texte. Data Integration fournit le paramètre nullFormat pour définir quelles chaînes peuvent représenter null. Exemples :

  • Si vous configurez nullFormat:"null", ce qui équivaut à un « caractère visible », et que les données source sont null, Data Integration traite le champ comme un champ nul.

  • Si vous configurez nullFormat:"\u0001", ce qui équivaut à un « caractère invisible », et que les données source sont la chaîne "\u0001", Data Integration traite le champ comme un champ nul.

  • Si vous ne spécifiez pas le paramètre "nullFormat", ce qui équivaut à « non configuré », les données source sont écrites dans la destination telles quelles, sans aucune conversion.

Non

Aucune

skipHeader

Les fichiers de type CSV peuvent contenir une ligne d'en-tête avec des titres de colonnes qu'il faut ignorer. Par défaut, l'en-tête n'est pas ignoré. skipHeader n'est pas pris en charge en mode fichier compressé.

Non

false

csvReaderConfig

La configuration pour la lecture des fichiers de type CSV. Ce paramètre est de type MAP. CsvReader est utilisé pour lire les fichiers de type CSV et prend en charge diverses configurations. Si ce paramètre n'est pas spécifié, les valeurs par défaut sont utilisées.

Non

Aucune

successOnNoObject

Indique si la tâche se termine avec succès lorsqu'aucun objet n'existe dans le chemin de lecture spécifié. Si ce paramètre est défini sur false, la tâche échoue. Si ce paramètre est défini sur true, la tâche se termine avec succès sans écrire aucune donnée. Ce paramètre s'applique aux scénarios de synchronisation périodique où le chemin source peut être vide. En mode d'interface utilisateur sans code, ce paramètre correspond à « Allow Missing Source Files » et n'est affiché que lorsque fileFormat est défini sur csv ou text.

Non

false

minLastModified

Spécifie que seuls les fichiers dont l'heure de dernière modification est égale ou postérieure à l'heure spécifiée sont synchronisés. Le format est yyyyMMddHHmmss. Par exemple, si vous configurez "minLastModified": "20250101000000", seuls les fichiers modifiés le 1er janvier 2025 à 00:00:00 ou après cette date sont lus, et les fichiers antérieurs sont filtrés. Vous pouvez utiliser ce paramètre conjointement avec maxLastModified pour former un intervalle [min, max) fermé à gauche et ouvert à droite.

Non

S.O.

maxLastModified

Synchronise uniquement les fichiers dont l'heure de dernière modification est antérieure à l'heure spécifiée. Le format est yyyyMMddHHmmss. Par exemple, si vous définissez "maxLastModified": "20250102000000", seuls les fichiers modifiés avant le 2 janvier 2025 à 00:00:00 sont lus. Les fichiers modifiés exactement à cette heure sont exclus (intervalle ouvert à droite). Vous pouvez utiliser ce paramètre conjointement avec minLastModified pour définir un intervalle [min, max) fermé à gauche et ouvert à droite.

Non

S.O.

Démonstration du script Writer : exemple général

Voici un exemple de script général pour OSS Writer.

{ "type":"job", "version":"2.0", "steps":[ { "stepType":"stream", "parameter":{}, "name":"Reader", "category":"reader" }, { "stepType":"oss",// Le nom du plug-in. "parameter":{ "nullFormat":"",// Le format null fourni par Data Integration, qui définit quelles chaînes peuvent représenter null. "dateFormat":"",// Le format de date. "datasource":"",// La source de données. "writeMode":"",// Le mode d'écriture. "writeSingleObject":"false", // Indique s'il faut écrire les données synchronisées dans un seul fichier OSS. "encoding":"",// Le format d'encodage. "fieldDelimiter":","// Le délimiteur de champ. "fileFormat":"",// Le format de fichier. "object":""// Le préfixe d'objet. }, "name":"Writer", "category":"writer" } ], "setting":{ "errorLimit":{ "record":"0"// Le nombre maximal d'enregistrements d'erreur autorisés. }, "speed":{ "throttle":true,// Si throttle est défini sur false, le paramètre mbps ne prend pas effet et la bande passante n'est pas limitée. Si throttle est défini sur true, la bande passante est limitée. "concurrent":1, // Le nombre de threads simultanés. "mbps":"12"// Le taux de limitation. 1 mbps = 1 Mo/s. } }, "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] } }

Exemple de script Writer : Écriture de fichiers ORC ou Parquet dans OSS

OSS prend en charge l'écriture de fichiers ORC ou Parquet en réutilisant HDFS Writer. Outre les paramètres existants d'OSS Writer, des paramètres de configuration étendus tels que Path et FileFormat sont ajoutés. Pour plus d'informations sur ces paramètres, consultez la rubrique HDFS Writer.

Voici un exemple d'écriture de fichiers ORC ou Parquet dans OSS :

Important

L'exemple ci-dessous est fourni à titre indicatif uniquement. Adaptez les paramètres en fonction des noms et des types de vos colonnes réelles. Ne copiez pas et n'utilisez pas directement cet exemple.

  • Écriture de fichiers ORC dans OSS

    Pour écrire des fichiers ORC, seul le mode script est pris en charge. Vous devez basculer vers le mode script pour la configuration. Définissez fileFormat sur orc, définissez path sur le chemin du fichier à écrire et configurez column au format {"name":"nom_de_votre_colonne","type": "type_de_votre_colonne"}.

    Les types ORC suivants sont pris en charge pour l'écriture :

    Type de champ

    Écriture par lot dans OSS (format ORC)

    TINYINT

    Pris en charge

    SMALLINT

    Pris en charge

    INT

    Pris en charge

    BIGINT

    Pris en charge

    FLOAT

    Pris en charge

    DOUBLE

    Pris en charge

    TIMESTAMP

    Pris en charge

    DATE

    Pris en charge

    VARCHAR

    Pris en charge

    STRING

    Pris en charge

    CHAR

    Pris en charge

    BOOLEAN

    Pris en charge

    DECIMAL

    Pris en charge

    BINARY

    Pris en charge

    {
    "stepType": "oss",
    "parameter": {
    "datasource": "",
    "fileFormat": "orc",
    "path": "/tests/case61",
    "fileName": "orc",
    "writeMode": "append",
    "column": [
    {
    "name": "col1",
    "type": "BIGINT"
    },
    {
    "name": "col2",
    "type": "DOUBLE"
    },
    {
    "name": "col3",
    "type": "STRING"
    }
    ],
    "writeMode": "append",
    "fieldDelimiter": "\t",
    "compress": "NONE",
    "encoding": "UTF-8"
    }
    }
  • Écriture dans OSS au format Parquet

    {
    "stepType": "oss",
    "parameter": {
    "datasource": "",
    "fileFormat": "parquet",
    "path": "/tests/case61",
    "fileName": "test",
    "writeMode": "append",
    "fieldDelimiter": "\t",
    "compress": "SNAPPY",
    "encoding": "UTF-8",
    "parquetSchema": "message test { required int64 int64_col;\n required binary str_col (UTF8);\nrequired group params (MAP) {\nrepeated group key_value {\nrequired binary key (UTF8);\nrequired binary value (UTF8);\n}\n}\nrequired group params_arr (LIST) {\nrepeated group list {\nrequired binary element (UTF8);\n}\n}\nrequired group params_struct {\nrequired int64 id;\n required binary name (UTF8);\n }\nrequired group params_arr_complex (LIST) {\nrepeated group list {\nrequired group element {\n required int64 id;\n required binary name (UTF8);\n}\n}\n}\nrequired group params_complex (MAP) {\nrepeated group key_value {\nrequired binary key (UTF8);\nrequired group value {\nrequired int64 id;\n required binary name (UTF8);\n}\n}\n}\nrequired group params_struct_complex {\nrequired int64 id;\n required group detail {\nrequired int64 id;\n required binary name (UTF8);\n}\n}\n}",
    "dataxParquetMode": "fields"
    }
    }

Paramètres du script Writer

Paramètre

Description

Obligatoire

Valeur par défaut

datasource

Le nom de la source de données. Vous pouvez ajouter une source de données en mode script. La valeur de ce paramètre doit correspondre au nom de la source de données que vous ajoutez.

Oui

S.O.

object

Le nom du fichier dans lequel OSS Writer écrit. OSS utilise les noms de fichiers pour simuler une structure de répertoires. OSS impose les limites suivantes sur les noms d'objets :

  • Si vous utilisez "object": "datax", le nom de l'objet écrit commence par datax, suivi d'un suffixe de chaîne aléatoire.

  • Si vous utilisez "object": "cdo/datax", le nom de l'objet écrit commence par /cdo/datax, suivi d'un suffixe de chaîne aléatoire. OSS utilise une barre oblique (/) comme séparateur de répertoire.

Si vous ne souhaitez pas de suffixe UUID aléatoire, nous vous recommandons de définir "writeSingleObject" : "true". Pour plus d'informations, consultez la description du paramètre writeSingleObject.

Oui

S.O.

ossBlockSize

La taille de bloc pour les téléchargements multiparties OSS. La taille de bloc par défaut est de 16 Mo. Lorsque le format de fichier est parquet ou ORC, vous pouvez configurer ce paramètre au même niveau que le paramètre object.

Les téléchargements multiparties OSS prennent en charge un maximum de 10 000 parties. Avec la taille de bloc par défaut, la taille maximale du fichier est de 160 Go. Si le nombre de parties dépasse la limite, vous pouvez augmenter la taille de bloc pour prendre en charge le téléchargement de fichiers plus volumineux.

Non

16

writeMode

Spécifie comment OSS Writer gère les données existantes avant l'écriture :

  • truncate : Avant l'écriture, efface tous les objets dont les noms correspondent au préfixe spécifié. Par exemple, si vous définissez "object":"abc", tous les objets dont les noms commencent par abc sont effacés.

  • append : Aucun traitement n'est effectué avant l'écriture. OSS Writer de Data Integration écrit les données directement en utilisant le nom de l'objet et ajoute un suffixe UUID aléatoire pour garantir l'unicité des noms de fichiers. Par exemple, si vous spécifiez le nom de l'objet comme DI, le nom réel de l'objet écrit est DI_**__**.

  • nonConflict : Si un objet avec un préfixe correspondant existe déjà au chemin spécifié, une erreur est renvoyée. Par exemple, si vous définissez "object":"abc" et qu'un objet nommé abc123 existe, une erreur est renvoyée.

Oui

Aucune

writeSingleObject

Indique s'il faut écrire les données dans un seul fichier lors de l'écriture dans OSS :

  • true : Écrit les données dans un seul fichier. Si aucune donnée n'est lue, aucun fichier vide n'est généré.

  • false : Écrit les données dans plusieurs fichiers. Si aucune donnée n'est lue et qu'un en-tête de fichier est configuré, un fichier vide contenant uniquement l'en-tête est généré. Sinon, seul un fichier vide est généré.

Remarque
  • Lorsque vous écrivez des données au format ORC ou Parquet, le paramètre writeSingleObject ne prend pas effet. Cela signifie que vous ne pouvez pas utiliser ce paramètre pour écrire des données dans un seul fichier ORC ou Parquet dans des scénarios de concurrence multiple. Pour écrire des données dans un seul fichier, vous pouvez définir la concurrence sur 1. Toutefois, un suffixe aléatoire est ajouté au nom du fichier et la définition de la concurrence sur 1 réduit la vitesse de synchronisation.

  • Dans certains scénarios, par exemple lorsque la source est Hologres, les données sont lues par shard. Une seule concurrence peut toujours générer plusieurs fichiers.

Non

false

fileFormat

Le format du fichier de sortie. Les formats suivants sont pris en charge :

  • csv : Seul le format csv strict est pris en charge. Si les données à écrire contiennent des délimiteurs de colonne, les données sont échappées selon la syntaxe d'échappement csv. Le caractère d'échappement est le guillemet double (").

  • text : Les données à écrire sont simplement séparées par des délimiteurs de colonne. Si les données à écrire contiennent des délimiteurs de colonne, aucun échappement n'est effectué.

  • parquet : Si vous utilisez ce type de fichier, vous devez ajouter le paramètre parquetSchema pour définir les types de données.

    Important
  • ORC : Si vous utilisez ce format, vous devez basculer en mode script.

Non

text

compress

Le format de compression des fichiers de données écrits dans OSS. Vous devez configurer ce paramètre en mode script.

Important

La compression n'est pas prise en charge pour les formats CSV et TEXT. Les fichiers Parquet et ORC ne prennent en charge que la compression SNAPPY.

Non

Aucune

fieldDelimiter

Le délimiteur de champ pour l'écriture.

Non

,

encoding

La configuration d'encodage pour le fichier de sortie.

Non

utf-8

parquetSchema

Obligatoire lors de l'écriture dans OSS au format de fichier Parquet. Ce paramètre décrit le schéma du fichier de destination et ne prend effet que lorsque fileFormat est défini sur parquet. Le format est le suivant.

message MessageTypeName {
required_or_optional, data_type, column_name;
......................;
}

Les éléments de configuration sont décrits comme suit :

  • Nom MessageType : Saisissez un nom.

  • Obligatoire ou non : required indique que le champ ne peut pas être nul, et optional indique que le champ peut être nul. Nous vous recommandons de définir tous les champs sur optional.

  • Type de données : Les fichiers Parquet prennent en charge les types suivants : BOOLEAN, INT32, INT64, INT96, FLOAT, DOUBLE, BINARY (utilisez BINARY pour les types de chaîne) et FIXED_LEN_BYTE_ARRAY.

Remarque

Chaque définition de colonne doit se terminer par un point-virgule, y compris la dernière ligne.

Exemple :

message m {
    optional int64 id;
    optional int64 date_id;
    optional binary datetimestring;
    optional int32 dspId;
    optional int32 advertiserId;
    optional int32 status;
    optional int64 bidding_req_num;
    optional int64 imp;
    optional int64 click_num;
    }

Non

Aucune

nullFormat

Les chaînes standard ne peuvent pas être utilisées pour définir null (pointeur nul) dans les fichiers texte. Le système de synchronisation des données fournit nullFormat pour définir une chaîne qui représente null. Par exemple, si vous définissez nullFormat="null" et que les données source sont null, le système de synchronisation des données les traite comme un champ nul.

Non

Aucune

header

La ligne d'en-tête lors de l'écriture dans OSS. Exemple : ["id", "name", "age"].

Non

Aucune

maxFileSize (configuration avancée, non prise en charge dans l'interface sans code)

La taille maximale d'un seul fichier objet écrit dans OSS. La valeur par défaut est de 10 000 × 10 Mo. Cela ressemble au contrôle de la taille des fichiers journaux lors de l'impression des journaux log4j. Lors du téléchargement multipartie OSS, chaque partie fait 10 Mo (ce qui est également la granularité minimale pour la rotation des journaux, ce qui signifie que toute valeur maxFileSize inférieure à 10 Mo est traitée comme 10 Mo). Chaque requête InitiateMultipartUploadRequest OSS prend en charge un maximum de 10 000 parties.

Lorsque la rotation se produit, le nom de l'objet est généré en ajoutant des suffixes tels que _1,_2,_3 au préfixe d'objet original avec une chaîne aléatoire basée sur un UUID.

Remarque
  • L'unité par défaut est le Mo.

  • Exemple de configuration : "maxFileSize":300 définit la taille maximale d'un seul fichier à 300 Mo.

  • maxFileSize ne prend effet que pour les formats CSV et TEXT. La taille du fichier est calculée au niveau de la mémoire du processus de tâche de synchronisation et ne peut pas contrôler précisément la taille réelle des fichiers écrits dans la destination. Pendant le processus d'écriture, l'expansion des données peut entraîner une taille de fichier réelle supérieure à la valeur attendue.

Non

100 000

suffix (configuration avancée, non prise en charge dans l'interface sans code)

Le suffixe ajouté au nom de fichier généré lors de l'écriture de la synchronisation des données. Par exemple, si vous définissez suffix sur .csv, le nom de fichier final est fileName****.csv.

Non

Aucun

Annexe : Stratégies de conversion de type pour les données Parquet

Si vous ne configurez pas parquetSchema, DataWorks convertit les types de champs source en types de données Parquet selon les stratégies suivantes.

Type de données converti

Type Parquet

Type logique Parquet

CHAR / VARCHAR / STRING

BINARY

UTF8

BOOLEAN

BOOLEAN

S.O.

BINARY / VARBINARY

BINARY

S.O.

DECIMAL

FIXED_LEN_BYTE_ARRAY

DECIMAL

TINYINT

INT32

INT_8

SMALLINT

INT32

INT_16

INT/INTEGER

INT32

S.O.

BIGINT

INT64

S.O.

FLOAT

FLOAT

S.O.

DOUBLE

DOUBLE

S.O.

DATE

INT32

DATE

TIME

INT32

TIME_MILLIS

TIMESTAMP/DATETIME

INT96

S.O.