Todos los productos
Search
Centro de documentos

DataWorks:Origen de datos de Amazon S3

Última actualización: Sep 06, 2026

Amazon Simple Storage Service (Amazon S3) es un servicio de object storage diseñado para almacenar y recuperar cualquier volumen de datos desde cualquier ubicación. Data Integration de DataWorks le permite leer datos de Amazon S3 y escribirlos en este servicio. Este tema describe las funciones del origen de datos de Amazon S3 en DataWorks.

Límites

Lectura por lotes

Amazon S3 almacena datos no estructurados. En Data Integration, el reader de Amazon S3 es compatible con las a continuación funciones.

Compatible

No compatible

  • Solo se pueden leer archivos en formato TXT. Además, el esquema del archivo TXT debe ser una tabla bidimensional.

  • Lee datos de objetos similares a CSV con delimitadores personalizados.

  • Lee datos en los formatos ORC, PARQUET, JSON y JSONL.

  • Lee diversos tipos de datos como cadenas de texto. También admite la eliminación de columnas y las columnas constantes.

  • Admite la lectura recursiva y el filtrado por nombre de objeto.

  • Admite la compresión de objetos. Los formatos de compresión compatibles son gzip, bzip2 y zip.

    Nota

    No es posible comprimir varios objetos en un solo paquete.

  • Admite la lectura simultánea de varios objetos.

  • No admite lecturas multihilo de un único Object (File).

  • No admite lecturas multihilo de un único Object comprimido.

  • No admite la lectura de un único Object (File) cuyo tamaño supere los 100 GB.

Escritura por lotes

El writer de Amazon S3 convierte los datos del protocolo de sincronización en archivos de texto dentro de Amazon S3. Dado que Amazon S3 es un almacenamiento de datos no estructurados, su writer es compatible con las a continuación funciones.

Compatible

No compatible

  • Solo se pueden escribir archivos de tipo texto (no se admiten tipos BLOB como videos e imágenes). El esquema del archivo de texto debe ser una tabla bidimensional.

  • Escribe datos en archivos similares a CSV con delimitadores personalizados.

  • Escribe datos en los formatos ORC y PARQUET.

    Nota

    La compresión SNAPPY es compatible en modo script.

  • Admite escritura multihilo. Cada hilo escribe en un subarchivo distinto.

  • Admite rotación de archivos. Cuando un archivo supera el tamaño especificado, el sistema cambia a uno nuevo.

  • No admite escrituras simultáneas en un solo archivo.

  • Amazon S3 no proporciona tipos de datos. Por ello, el writer de Amazon S3 escribe todos los datos en los objetos de Amazon S3 como tipo STRING.

  • Si la clase de almacenamiento del bucket de Amazon S3 es Deep Archive, no se admiten operaciones de escritura.

  • Un solo Object (File) no puede superar los 100 GB.

Agregar un origen de datos

Antes de desarrollar una tarea de sincronización en DataWorks, agregue el origen de datos obligatorio a DataWorks siguiendo las instrucciones de Data source configuration. Consulte las descripciones de los parámetros en la consola de DataWorks para comprender el significado de cada parámetro al agregar un origen de datos.

Desarrollar una tarea de sincronización de datos

Para conocer el punto de entrada y el procedimiento de configuración de una tarea de sincronización, consulte las a continuación guías de configuración.

Configurar una tarea de sincronización por lotes de una sola tabla

Apéndice: ejemplo de script y descripción de parámetros

Configurar una tarea de sincronización por lotes mediante el editor de código

Si desea configurar una tarea de sincronización por lotes mediante el editor de código, configure los parámetros correspondientes en el script según los requisitos de formato unificado. Para obtener más información, consulte Script mode configuration. A continuación se describen los parámetros que debe configurar para los orígenes de datos cuando utilice el editor de código.

Ejemplo de script de 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. Valid values: csv, text, parquet, orc, json, and jsonl.
                "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"
            }
        ]
    }
}

Parámetros del script de Reader

Parámetro

Descripción

Obligatorio

Valor predeterminado

datasource

Nombre del origen de datos. El modo script permite agregar orígenes de datos. El valor de este parámetro debe coincidir con el nombre del origen de datos que agregó.

Sí

N/A

Object

Información del objeto en Amazon S3. Puede especificar varios objetos. Por ejemplo, si el bucket contiene una carpeta de prueba y esta incluye un archivo llamado ll.txt, establezca Object como test/ll.txt.

  • Cuando se especifica un solo objeto de S3, el reader de Amazon S3 solo admite la extracción de datos con un solo hilo.

  • Cuando se especifican varios objetos de S3, el reader de Amazon S3 admite la extracción de datos multihilo. La cantidad de hilos simultáneos se define mediante el número de canales.

  • Cuando se usan comodines, el reader de Amazon S3 intenta enumerar varios objetos. Por ejemplo, abc*[0-9] coincide con abc0, abc1, abc2, abc3, etc. El uso de comodines puede provocar errores de memoria insuficiente. Se recomienda evitarlos.

Nota
  • El sistema de sincronización de datos trata todos los objetos sincronizados por un solo trabajo como una única tabla de datos. Asegúrese de que todos los objetos cumplan con el mismo esquema.

  • Controle la cantidad de archivos en un solo directorio. De lo contrario, podría activarse el error OutOfMemoryError. Si esto ocurre, divida los archivos en distintos directorios e inténtelo de nuevo.

Sí

N/A

column

Lista de columnas por leer. El parámetro type indica el tipo de dato de origen:

  • Formato CSV/TEXT: el parámetro index indica el número de columna en el archivo de texto (comenzando desde 0), mientras que el parámetro value indica un valor constante.

  • Formato JSON/JSONL: use jsonPath para indicar una expresión JSONPath que extraiga los campos, y el parámetro value para indicar un valor constante.

De forma predeterminada, todos los datos se pueden leer como tipo String. Configuración de ejemplo:

column": ["*"]

También puede especificar la información de las columnas. Configuración de ejemplo:

// CSV/TEXT format
                    "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.    
}
// JSON/JSONL format
"column":    
{       
"name": "id",       
"jsonPath": "$.id",       
"type": "LONG"
},    
{       
"name": "name",       
"jsonPath": "$.user.name",       
"type": "STRING"
},    
{       
"name": "source",       
"value": "s3",       
"type": "STRING"
}
Nota

En la información de column que especifique, el parámetro type es obligatorio. Para el formato CSV/TEXT, indique index o value. Para el formato JSON/JSONL, indique jsonPath o value.

Sí

Todos los datos se leen como tipo STRING.

fieldDelimiter

Delimitador de columnas para la lectura de datos.

Nota

Cuando el reader de Amazon S3 lee datos, debe especificar un delimitador de columnas. Si no se indica ninguno, se usa el delimitador predeterminado (,). Este mismo delimitador (,) también se aplica en la interfaz sin código.

Si el delimitador es invisible, especifique la codificación Unicode. Por ejemplo, \u001b o \u007c.

Sí

Valor predeterminado: (,)

compress

Tipo de compresión. De forma predeterminada, este parámetro se deja vacío, lo que indica que no se aplica ninguna compresión. Los tipos de compresión compatibles son gzip, bzip2 y zip.

No

Sin compresión

encoding

Codificación de los archivos por leer.

No

utf-8

nullFormat

Las cadenas estándar de los archivos de texto no pueden representar un valor nulo (puntero nulo). El sistema de sincronización de datos utiliza nullFormat para definir qué cadenas representan un valor nulo. Por ejemplo, si establece nullFormat="null" y los datos de origen son "null", el sistema de sincronización de datos lo tratará como un campo nulo.

No

N/A

skipHeader

Para los archivos CSV, use skipHeader para indicar si se debe leer la fila de encabezado.

  • True: la fila de encabezado se lee durante la sincronización de datos.

  • False: la fila de encabezado no se lee durante la sincronización de datos.

Nota

skipHeader no es compatible con archivos comprimidos.

No

false

csvReaderConfig

Configuración para la lectura de archivos CSV. Este parámetro es de tipo Map. CsvReader se encarga de leer los archivos CSV y ofrece diversas opciones de configuración. Si no configura este parámetro, se aplican los valores predeterminados.

No

N/A

Ejemplo de script de 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"
            }
        ]
    }
}

Parámetros del script de Writer

Parámetro

Descripción

Obligatorio

Valor predeterminado

datasource

Nombre del origen de datos. El modo script permite agregar orígenes de datos. El valor de este parámetro debe coincidir con el nombre del origen de datos que agregó.

Sí

N/A

object

Nombre del objeto de destino.

Sí

N/A

fileFormat

Se admiten los a continuación formatos de archivo:

  • csv: solo se admite el formato CSV estricto. Si los datos por escribir contienen delimitadores de columnas, se escapan según la sintaxis de escape de CSV. El carácter de escape son las comillas dobles (").

  • text: usa delimitadores de columnas para separar los datos de forma simple. Los datos que contienen delimitadores de columnas no se escapan.

  • parquet

  • ORC

Sí

text

writeMode

  • truncate: antes de escribir, se eliminan todos los objetos cuyos nombres coinciden con el prefijo de nombre de objeto especificado. Por ejemplo, si establece "object":"abc", se eliminarán todos los objetos cuyos nombres comiencen con abc.

  • append: no se procesan los datos antes de escribirlos. El writer de S3 de Data Integration escribe los datos directamente usando el nombre de objeto especificado con un sufijo UUID aleatorio para evitar conflictos de nombres de archivo. Por ejemplo, si establece el nombre del objeto como DI, el archivo escrito realmente será DI_xxxx_xxxx_xxxx.

  • nonConflict: se reporta un error si existe algún objeto con un prefijo coincidente en la ruta especificada. Por ejemplo, si establece "object":"abc" y ya existe un objeto llamado abc123, se reportará un error.

Sí

append

fieldDelimiter

Delimitador de columnas para la escritura de datos.

No

Valor predeterminado: (,)

lineDelimiter

Delimitador de líneas para la escritura de datos.

No

Valor predeterminado: (\n)

compress

Tipo de compresión. De forma predeterminada, este parámetro se deja vacío, lo que indica que no se aplica ninguna compresión.

  • Cuando fileFormat se establece en text o csv, se admiten GZIP y BZIP2.

  • Cuando fileFormat se establece en parquet u orc, se admite la compresión SNAPPY.

No

Sin compresión

nullFormat

Las cadenas estándar de los archivos de texto no pueden representar un valor nulo (puntero nulo). El sistema de sincronización de datos utiliza nullFormat para definir qué cadenas representan un valor nulo. Por ejemplo, si establece nullFormat="null" y los datos de origen son nulos, el sistema de sincronización de datos los tratará como un campo nulo.

No

N/A

header

Encabezado por escribir. Ejemplo: ["id", "name", "age"].

No

N/A

writeSingleObject

true: escribe los datos en un solo archivo. false: escribe los datos en varios archivos.

Nota
  • Cuando escribe datos en formato ORC o Parquet, el parámetro writeSingleObject no surte efecto. Incluso con este parámetro, no es posible escribir datos en un solo archivo ORC o Parquet en escenarios de concurrencia múltiple. Para escribir datos en un solo archivo, establezca la concurrencia en 1. Sin embargo, se agregará un sufijo aleatorio al nombre del archivo, y establecer la concurrencia en 1 afecta la velocidad de sincronización.

  • En algunos escenarios, por ejemplo, cuando el origen es Hologres, los datos se leen según particiones de shard. Incluso con una sola ejecución simultánea, podrían generarse varios archivos.

No

false

encoding

Codificación de los archivos por escribir.

No

utf-8

column

Configuración de columnas para la escritura de datos.

  • Cuando fileFormat se establece en csv o text, configure el parámetro column con marcadores de posición numéricos. Ejemplo:

    "column":[
     "0",
     "1"
     ]
  • Cuando fileFormat se establece en Parquet u ORC, configure el parámetro column con combinaciones de name y type. Ejemplo:

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

Sí

N/A