Todos os produtos
Search
Central de documentação

DataWorks:Fonte de dados Amazon S3

Última atualização: Sep 21, 2026

O Amazon Simple Storage Service (Amazon S3) é um Object Storage Service criado para armazenar e recuperar qualquer volume de dados de qualquer lugar. O DataWorks Data Integration permite ler e gravar dados no Amazon S3. Este tópico descreve as capacidades da fonte de dados Amazon S3 no DataWorks.

Limitações

Leitura em lote

O Amazon S3 armazena dados não estruturados. No Data Integration, o leitor do Amazon S3 oferece suporte aos seguintes recursos.

Supported

Unsupported

  • Somente arquivos no formato TXT podem ser lidos, e o schema do arquivo TXT deve ser uma tabela bidimensional.

  • Lê dados de objetos no estilo CSV com delimitadores personalizados.

  • Lê dados nos formatos ORC, PARQUET, JSON e JSONL.

  • Lê diversos tipos de dados como strings e oferece suporte a pruning de colunas e colunas constantes.

  • Suporta leitura recursiva e filtragem de nomes de objetos.

  • Suporta compactação de objetos. Os formatos de compactação suportados são gzip, bzip2 e zip.

    Nota

    Não é possível compactar múltiplos objetos em um único pacote.

  • Suporta leitura simultânea de múltiplos objetos.

  • Não suporta leituras multi-thread de um único Object (File).

  • Não suporta leituras multi-thread de um único Object compactado.

  • Não suporta a leitura de um único Object (File) com tamanho superior a 100 GB.

Gravação em lote

O gravador do Amazon S3 converte dados do protocolo de sincronização de dados em arquivos de texto no Amazon S3. O Amazon S3 é, por natureza, um armazenamento de dados não estruturados. O gravador do Amazon S3 suporta os seguintes recursos.

Supported

Unsupported

  • Somente arquivos do tipo texto podem ser gravados (tipos BLOB como vídeos e imagens não são suportados), e o schema do arquivo de texto deve ser uma tabela bidimensional.

  • Grava dados em arquivos no estilo CSV com delimitadores personalizados.

  • Grava dados nos formatos ORC e PARQUET.

    Nota

    A compactação SNAPPY é suportada no modo script.

  • Suporta gravação multi-thread. Cada thread grava em um sub-arquivo diferente.

  • Suporta rotação de arquivos. Quando um arquivo ultrapassa um tamanho especificado, o sistema alterna para um novo arquivo.

  • Não suporta gravações simultâneas em um único arquivo.

  • O Amazon S3 não fornece tipos de dados. O gravador do Amazon S3 grava todos os dados nos objetos do Amazon S3 como tipo STRING.

  • Se a classe de armazenamento do bucket do Amazon S3 for Deep Archive, as operações de gravação não são suportadas.

  • Um único Object (File) não pode exceder 100 GB.

Adicionar uma fonte de dados

Antes de desenvolver uma tarefa de sincronização no DataWorks, adicione a fonte de dados necessária ao DataWorks seguindo as instruções em Data source configuration. Acesse o console do DataWorks para visualize as descrições dos parâmetros e entender o significado de cada um ao adicionar uma fonte de dados.

Desenvolver uma tarefa de sincronização de dados

Para obter informações sobre o ponto de entrada e o procedimento de configure de uma tarefa de sincronização, consulte os guias de configure a seguir.

Configure uma tarefa de sincronização em lote de tabela única

Apêndice: Demo de script e descrição de parâmetros

Configure uma tarefa de sincronização em lote usando o editor de código

Para configure uma tarefa de sincronização em lote usando o editor de código, configure os parâmetros relacionados no script de acordo com os requisitos do formato de script unificado. Para mais informações, consulte Script mode configuration. As informações a seguir descrevem os parâmetros que devem ser configurados para as fontes de dados ao usar o editor de código.

Demo de script do 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 do script do Reader

Parameter

Description

Required

Default value

datasource

O nome da fonte de dados. O modo script permite adicionar fontes de dados. O valor deste parâmetro deve ser igual ao nome da fonte de dados adicionada.

Sim

N/A

Object

As informações do objeto no Amazon S3. É possível especifique múltiplos objetos. Por exemplo, se o bucket contiver uma pasta chamada test e essa pasta contiver um arquivo chamado ll.txt, defina Object como test/ll.txt.

  • Ao especifique um único objeto S3, o leitor do Amazon S3 suporta apenas extração de dados single-thread.

  • Ao especifique múltiplos objetos S3, o leitor do Amazon S3 suporta extração de dados multi-thread. O número de threads simultâneas é determinado pelo número de canais.

  • Ao usar wildcards, o leitor do Amazon S3 tentará listar múltiplos objetos. Por exemplo, abc*[0-9] corresponde a abc0, abc1, abc2, abc3 e assim por diante. O uso de wildcards pode causar erros de out-of-memory. Recomenda-se não utilizar wildcards.

Nota
  • O sistema de sincronização de dados trata todos os objetos sincronizados por um único job como uma única tabela de dados. Certifique-se de que todos os objetos estejam em conformidade com o mesmo schema.

  • Controle o número de arquivos em um único diretório. Caso contrário, um erro OutOfMemoryError poderá ser acionado. Se isso ocorrer, distribua os arquivos em diretórios diferentes e tente novamente.

Sim

N/A

column

A lista de colunas a serem lidas. O parâmetro type especifique o tipo de dado dos dados de origem:

  • Formato CSV/TEXT: O parâmetro index especifique o número da coluna no arquivo de texto (começando em 0), e o parâmetro value especifique um valor constante.

  • Formato JSON/JSONL: Use jsonPath para especifique uma expressão JSONPath e extrair campos; o parâmetro value especifique um valor constante.

Por padrão, todos os dados podem ser lidos como tipo String. Exemplo de configure:

column": ["*"]

Também é possível especifique informações de colunas. Exemplo de configure:

// 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

Nas informações de column especificadas, o parâmetro type é obrigatório. Para o formato CSV/TEXT, especifique index ou value. Para o formato JSON/JSONL, especifique jsonPath ou value.

Sim

Todos os dados são lidos como tipo STRING.

fieldDelimiter

O delimitador de colunas para leitura de dados.

Nota

Ao ler dados com o leitor do Amazon S3, é necessário especifique um delimitador de colunas. Se nenhum delimitador for especificado, o delimitador padrão (,) será usado. O delimitador padrão (,) também é usado na interface sem código.

Se o delimitador não for visível, especifique a codificação Unicode. Por exemplo, \u001b ou \u007c.

Sim

Valor padrão: (,)

compress

O tipo de compactação. Por padrão, este parâmetro é deixado em branco, indicando que nenhuma compactação é aplicada. Os tipos de compactação suportados são gzip, bzip2 e zip.

Não

Sem compactação

encoding

A codificação dos arquivos a serem lidos.

Não

utf-8

nullFormat

Strings padrão em arquivos de texto não conseguem representar null (ponteiro nulo). O sistema de sincronização de dados usa nullFormat para defina quais strings podem representar null. Por exemplo, ao defina nullFormat="null" com o dado de origem igual a "null", o sistema de sincronização de dados o trata como um campo nulo.

Não

N/A

skipHeader

Para arquivos CSV, use skipHeader para especifique se a linha de cabeçalho deve ser lida.

  • True: A linha de cabeçalho é lida durante a sincronização de dados.

  • False: A linha de cabeçalho não é lida durante a sincronização de dados.

Nota

skipHeader não é suportado para arquivos compactados.

Não

false

csvReaderConfig

A configure para leitura de arquivos CSV. Este parâmetro é do tipo Map. O CsvReader lê arquivos CSV e oferece diversas opções de configure. Se este parâmetro não for configurado, os valores padrão serão aplicados.

Não

N/A

minLastModified

Filtra arquivos pela data da última modificação e defina o limite inferior inclusivo. Arquivos modificados em data igual ou posterior (>=) ao valor especificado são incluídos. Use o formato yyyyMMddHHmmss. Combinado com maxLastModified, este parâmetro defina o intervalo fechado à esquerda e aberto à direita [min, max).

maxLastModified

Filtra arquivos pela data da última modificação e defina o limite superior exclusivo. Somente arquivos modificados antes (<) do valor especificado são incluídos. Use o formato yyyyMMddHHmmss. Combinado com minLastModified, este parâmetro defina o intervalo fechado à esquerda e aberto à direita [min, max).

Demo de script do 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 do script do Writer

Parameter

Description

Required

Default value

datasource

O nome da fonte de dados. O modo script permite adicionar fontes de dados. O valor deste parâmetro deve ser igual ao nome da fonte de dados adicionada.

Sim

N/A

object

O nome do objeto de destino.

Sim

N/A

fileFormat

Os seguintes formatos de arquivo são suportados:

  • csv: Somente o formato CSV estrito é suportado. Se os dados a serem gravados contiverem delimitadores de coluna, eles serão escapados conforme a sintaxe de escape CSV. O caractere de escape é uma aspas dupla (").

  • text: Usa delimitadores de coluna para separar os dados de forma simples. Dados que contenham delimitadores de coluna não são escapados.

  • parquet

  • ORC

Sim

text

writeMode

  • truncate: Antes da gravação, todos os objetos cujos nomes correspondem ao prefixo de nome de objeto especificado são excluídos. Por exemplo, ao defina "object":"abc", todos os objetos cujos nomes começam com abc são excluídos.

  • append: Nenhum processamento é realizado antes da gravação. O gravador S3 do Data Integration grava os dados diretamente usando o nome de objeto especificado com um sufixo UUID aleatório para evitar conflitos de nome. Por exemplo, se o nome do objeto for defina como DI, o arquivo gravado será DI_xxxx_xxxx_xxxx.

  • nonConflict: Um erro é reportado se qualquer objeto com prefixo correspondente existir no caminho especificado. Por exemplo, ao defina "object":"abc" e um objeto chamado abc123 já existir, um erro é reportado.

Sim

append

fieldDelimiter

O delimitador de colunas para gravação de dados.

Não

Valor padrão: (,)

lineDelimiter

O delimitador de linhas para gravação de dados.

Não

Valor padrão: (\n)

compress

O tipo de compactação. Por padrão, este parâmetro é deixado em branco, indicando que nenhuma compactação é aplicada.

  • Quando fileFormat estiver defina como text ou csv, GZIP e BZIP2 são suportados.

  • Quando fileFormat estiver defina como parquet ou orc, a compactação SNAPPY é suportada.

Não

Sem compactação

nullFormat

Strings padrão em arquivos de texto não conseguem representar null (ponteiro nulo). O sistema de sincronização de dados usa nullFormat para defina quais strings podem representar null. Por exemplo, ao defina nullFormat="null" com o dado de origem igual a null, o sistema de sincronização de dados o trata como um campo nulo.

Não

N/A

header

O cabeçalho a ser gravado. Exemplo: ["id", "name", "age"].

Não

N/A

writeSingleObject

true: Grava os dados em um único arquivo. false: Grava os dados em múltiplos arquivos.

Nota
  • Ao gravar dados nos formatos ORC ou Parquet, o parâmetro writeSingleObject não tem efeito. Mesmo com este parâmetro, não é possível gravar dados em um único arquivo ORC ou Parquet em cenários de múltipla concorrência. Para gravar em um único arquivo, defina a concorrência como 1. No entanto, um sufixo aleatório será adicionado ao nome do arquivo, e defina a concorrência como 1 impacta a velocidade de sincronização.

  • Em alguns cenários, como quando a origem é o Hologres, os dados são lidos com base em partições de shard. Mesmo com concorrência única, múltiplos arquivos podem ser gerados.

Não

false

encoding

A codificação dos arquivos a serem gravados.

Não

utf-8

column

A configure de colunas para gravação de dados.

  • Quando fileFormat estiver defina como csv ou text, configure o parâmetro column com marcadores numéricos. Exemplo:

    "column":[
     "0",
     "1"
     ]
  • Quando fileFormat estiver defina como Parquet ou ORC, configure o parâmetro column com combinações de nome e tipo. Exemplo:

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

Sim

N/A