Tous les produits
Search
Centre de documentation

DataWorks:Source de données Amazon S3

Dernière mise à jour :Aug 10, 2026

Amazon Simple Storage Service (Amazon S3) est un service de stockage d'objets conçu pour stocker et récupérer n'importe quelle quantité de données depuis n'importe où. L'intégration de données DataWorks vous permet de lire des données depuis Amazon S3 et d'y écrire des données. Cette rubrique décrit les fonctionnalités de la source de données Amazon S3 dans DataWorks.

Limites

Lecture par lots

Amazon S3 stocke des données non structurées. Dans Data Integration, le lecteur Amazon S3 prend en charge les fonctionnalités suivantes.

Pris en charge

Non pris en charge

  • Seuls les fichiers au format TXT peuvent être lus, et le schéma du fichier TXT doit être une table bidimensionnelle.

  • Lit les données à partir d'objets de type CSV avec des délimiteurs personnalisés.

  • Lit les données aux formats ORC et PARQUET.

  • Lit divers types de données sous forme de chaînes et prend en charge l'élagage des colonnes ainsi que les colonnes constantes.

  • Prend en charge la lecture récursive et le filtrage par nom d'objet.

  • Prend en charge la compression des objets. Les formats de compression pris en charge sont gzip, bzip2 et zip.

    Remarque

    Vous ne pouvez pas compresser plusieurs objets dans un seul package.

  • Prend en charge la lecture simultanée de plusieurs objets.

  • Ne prend pas en charge les lectures multithread d'un seul Object (File).

  • Ne prend pas en charge les lectures multithread d'un seul Object compressé.

  • Ne prend pas en charge la lecture d'un seul Object (File) dont la taille dépasse 100 Go.

Écriture par lots

Le writer Amazon S3 convertit les données du protocole de synchronisation des données en fichiers texte dans Amazon S3. Amazon S3 étant lui-même un magasin de données non structurées, le writer Amazon S3 prend en charge les fonctionnalités suivantes.

Pris en charge

Non pris en charge

  • Seuls les fichiers de type texte peuvent être écrits (les types BLOB tels que les vidéos et les images ne sont pas pris en charge), et le schéma du fichier texte doit être une table bidimensionnelle.

  • Écrit les données dans des fichiers de type CSV avec des délimiteurs personnalisés.

  • Écrit les données aux formats ORC et PARQUET.

    Remarque

    La compression SNAPPY est prise en charge en mode script.

  • Prend en charge l'écriture multithread. Chaque thread écrit dans un sous-fichier différent.

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

  • Ne prend pas en charge les écritures simultanées dans un seul fichier.

  • Amazon S3 ne fournit pas de types de données. Le writer Amazon S3 écrit toutes les données dans les objets Amazon S3 au type STRING.

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

  • Un seul Object (File) ne peut pas dépasser 100 Go.

Ajouter 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.

Développer une tâche 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.

Configurer une tâche de synchronisation par lots pour une seule table

Annexe : Exemple de script 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

{
    "type":"job",
    "version":"2.0",// The version number.
    "steps":[
        {
            "stepType":"s3",// The plug-in name.
            "parameter":{
                "nullFormat":"",// The string that represents a null value.
                "compress":"",// The compression type.
                "datasource":"",// The data source name.
                "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":"",// Specifies whether to skip the header row of a CSV-like file.
                "encoding":"",// The encoding format.
                "fieldDelimiter":",",// The column delimiter.
                "fileFormat": "",// The file format.
                "object":[]// The object prefix.
            },
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"stream",
            "parameter":{},
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":""// The error count.
        },
        "speed":{
            "throttle":true,// Specifies whether to enable throttling. A value of false indicates that throttling is disabled and the mbps parameter does not take effect. A value of true indicates that throttling is enabled.
            "concurrent":1 // The concurrency.
            "mbps":"12",// The throttling rate. 1 mbps = 1 MB/s.
        }
    },
    "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 vous permet d'ajouter des sources de données. La valeur de ce paramètre doit être identique au nom de la source de données que vous ajoutez.

Oui

S.O.

Object

Les informations sur l'objet dans Amazon S3. Vous pouvez spécifier plusieurs objets. Par exemple, si le bucket contient un dossier test, et que ce dossier contient un fichier nommé ll.txt, définissez Object sur test/ll.txt.

  • Lorsque vous spécifiez un seul objet S3, le lecteur Amazon S3 prend uniquement en charge l'extraction de données monothread.

  • Lorsque vous spécifiez plusieurs objets S3, le lecteur Amazon S3 prend en charge l'extraction de données multithread. Le nombre de threads simultanés est déterminé par le nombre de canaux.

  • Lorsque vous spécifiez des caractères génériques, le lecteur Amazon S3 tente de répertorier plusieurs objets. Par exemple, abc*[0-9] correspond à abc0, abc1, abc2, abc3, etc. L'utilisation de caractères génériques peut provoquer des erreurs de mémoire insuffisante. Nous vous recommandons de ne pas utiliser de caractères génériques.

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

  • Contrôlez le nombre de fichiers dans un seul répertoire. Sinon, une erreur OutOfMemoryError risque de se produire. Si cela se produit, répartissez les fichiers dans différents répertoires et réessayez.

Oui

S.O.

column

La liste des colonnes à lire. Le paramètre type spécifie le type de données des données source. Le paramètre index spécifie le numéro de colonne dans le fichier texte (à partir de 0). Le paramètre value indique que la colonne actuelle est une constante. Au lieu de lire les données à partir du fichier source, le système génère la colonne en fonction de la valeur spécifiée.

Par défaut, vous pouvez lire toutes les données au type String. Exemple de configuration :

column": ["*"]

Vous pouvez également spécifier les informations de colonne. Exemple de configuration :

"column":    
{       
"type": "long",       
"index": 0 //Retrieve the int field from the first column of the S3 text.
},    
{       
"type": "string",       
"value": "alibaba" //Generate the string field "alibaba" internally from S3 Reader as the current field.    
}
Remarque

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

Oui

Toutes les données sont lues au type STRING.

fieldDelimiter

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

Remarque

Lorsque le lecteur Amazon S3 lit des données, vous devez spécifier un délimiteur de colonne. Si aucun délimiteur n'est spécifié, le délimiteur par défaut (,) est utilisé. Le délimiteur par défaut (,) est également utilisé dans l'interface sans code.

Si le délimiteur est invisible, spécifiez l'encodage Unicode. Par exemple, \u001b ou \u007c.

Oui

Valeur par défaut : (,)

compress

Le type de compression. Par défaut, ce paramètre est vide, ce qui indique qu'aucune compression n'est appliquée. Les types de compression pris en charge sont gzip, bzip2 et zip.

Non

Aucune compression

encoding

L'encodage des fichiers à lire.

Non

utf-8

nullFormat

Les chaînes standard dans les fichiers texte ne peuvent pas représenter null (pointeur nul). Le système de synchronisation des données utilise nullFormat pour définir quelles chaînes peuvent représenter null. Par exemple, si vous définissez nullFormat="null" et que la donnée source est "null", le système de synchronisation des données la traite comme un champ null.

Non

S.O.

skipHeader

Pour les fichiers CSV, utilisez skipHeader pour spécifier s'il faut lire la ligne d'en-tête.

  • True : La ligne d'en-tête est lue lors de la synchronisation des données.

  • False : La ligne d'en-tête n'est pas lue lors de la synchronisation des données.

Remarque

skipHeader n'est pas pris en charge pour les fichiers compressés.

Non

false

csvReaderConfig

La configuration pour la lecture des fichiers CSV. Ce paramètre est de type Map. CsvReader est utilisé pour lire les fichiers CSV et propose diverses configurations. Si vous ne configurez pas ce paramètre, les valeurs par défaut sont utilisées.

Non

S.O.

Exemple de script Writer

{
    "type": "job",
    "version": "2.0",
    "steps": [
        {
            "stepType": "stream",
            "parameter": {},
            "name": "Reader",
            "category": "reader"
        },
        {
            "stepType": "s3",
            "category": "writer",
            "name": "Writer",
            "parameter": {
                "datasource": "datasource1",
                "object": "test/csv_file.csv",
                "fileFormat": "csv",
                "encoding": "utf8/gbk/...",
                "fieldDelimiter": ",",
                "lineDelimiter": "\n",
                "column": [
                    "0",
                    "1"
                ],
                "header": [
                    "col_bigint",
                    "col_tinyint"
                ],
                "writeMode": "truncate",
                "writeSingleObject": true
            }
        }
    ],
    "setting": {
        "errorLimit": {
            "record": "" // The error count.
        },
        "speed": {
            "throttle": true, // Specifies whether to enable throttling. A value of false indicates that throttling is disabled and the mbps parameter does not take effect. A value of true indicates that throttling is enabled.
            "concurrent": 1 // The concurrency.
            "mbps": "12", // The throttling rate. 1 mbps = 1 MB/s.
        }
    },
    "order": {
        "hops": [
            {
                "from": "Reader",
                "to": "Writer"
            }
        ]
    }
}

Paramètres du script Writer

Paramètre

Description

Obligatoire

Valeur par défaut

datasource

Le nom de la source de données. Le mode script vous permet d'ajouter des sources de données. La valeur de ce paramètre doit être identique au nom de la source de données que vous ajoutez.

Oui

S.O.

object

Le nom de l'objet de destination.

Oui

S.O.

fileFormat

Les formats de fichier 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 : Utilise des délimiteurs de colonne pour séparer simplement les données. Les données contenant des délimiteurs de colonne ne sont pas échappées.

  • parquet

  • ORC

Oui

text

writeMode

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

  • append : Aucun traitement n'est effectué avant l'écriture. Le writer S3 de Data Integration écrit directement les données en utilisant le nom d'objet spécifié avec un suffixe UUID aléatoire pour éviter les conflits de noms de fichiers. Par exemple, si vous définissez le nom de l'objet sur DI, le fichier réellement écrit est DI_xxxx_xxxx_xxxx.

  • nonConflict : Une erreur est signalée si un objet avec un préfixe correspondant existe dans le chemin spécifié. Par exemple, si vous définissez "object":"abc" et qu'un objet nommé abc123 existe, une erreur est signalée.

Oui

append

fieldDelimiter

Le délimiteur de colonne pour l'écriture des données.

Non

Valeur par défaut : (,)

lineDelimiter

Le délimiteur de ligne pour l'écriture des données.

Non

Valeur par défaut : (\n)

compress

Le type de compression. Par défaut, ce paramètre est vide, ce qui indique qu'aucune compression n'est appliquée.

  • Lorsque fileFormat est défini sur text ou csv, GZIP et BZIP2 sont pris en charge.

  • Lorsque fileFormat est défini sur parquet ou orc, la compression SNAPPY est prise en charge.

Non

Aucune compression

nullFormat

Les chaînes standard dans les fichiers texte ne peuvent pas représenter null (pointeur nul). Le système de synchronisation des données utilise nullFormat pour définir quelles chaînes peuvent représenter null. Par exemple, si vous définissez nullFormat="null" et que la donnée source est null, le système de synchronisation des données la traite comme un champ null.

Non

S.O.

header

L'en-tête à écrire. Exemple : ["id", "name", "age"].

Non

S.O.

writeSingleObject

true : Écrit les données dans un seul fichier. false : Écrit les données dans plusieurs fichiers.

Remarque
  • Lorsque vous écrivez des données au format ORC ou Parquet, le paramètre writeSingleObject n'a aucun effet. Même avec ce paramètre, vous ne pouvez pas é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, définissez la concurrence sur 1. Toutefois, un suffixe aléatoire est ajouté au nom du fichier, et le fait de définir la concurrence sur 1 affecte la vitesse de synchronisation.

  • Dans certains scénarios, par exemple lorsque la source est Hologres, les données sont lues en fonction des partitions de shard. Même avec une concurrence unique, plusieurs fichiers peuvent être générés.

Non

false

encoding

L'encodage des fichiers à écrire.

Non

utf-8

column

La configuration des colonnes pour l'écriture des données.

  • Lorsque fileFormat est défini sur csv ou text, configurez le paramètre column avec des espaces réservés numériques. Exemple :

    "column":[
     "0",
     "1"
     ]
  • Lorsque fileFormat est défini sur Parquet ou ORC, configurez le paramètre column avec des combinaisons name et type. Exemple :

    "column": [
      {
        "name": "col1",
        "type": "BIGINT"
      },
      {
        "name": "col2",
        "type": "DOUBLE"
      }

Oui

S.O.