Todos os produtos
Search
Central de documentação

DataWorks:Fonte de dados do Amazon S3

Última atualização: Jun 27, 2026

O Amazon Simple Storage Service (Amazon S3) é um Object Storage Service desenvolvido para armazenar e recuperar qualquer volume de dados, de qualquer lugar. O Data Integration do DataWorks permite ler e gravar dados no Amazon S3. Este tópico descreve os recursos da fonte de dados do 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:

Suportado

Não suportado

  • Leitura apenas de arquivos no formato TXT, com esquema em tabela bidimensional.

  • Leitura de dados de objetos semelhantes a CSV com delimitadores personalizados.

  • Leitura de dados nos formatos ORC e PARQUET.

  • Leitura de vários tipos de dados como strings, com suporte a poda de colunas e colunas constantes.

  • Suporte a leitura recursiva e filtragem por nome de objeto.

  • Suporte a compressão de objetos nos formatos gzip, bzip2 e zip.

    Nota

    Não é possível compactar vários objetos em um único pacote.

  • Leitura simultânea de múltiplos objetos.

  • Leituras multithread de um único Objeto (Arquivo).

  • Leituras multithread de um único Objeto compactado.

  • Leitura de um único Objeto (Arquivo) maior que 100 GB.

Gravação em lote

O gravador do Amazon S3 converte dados do protocolo de sincronização em arquivos de texto no Amazon S3. Como o Amazon S3 é um armazenamento de dados não estruturados, seu gravador oferece os seguintes recursos:

Suportado

Não suportado

  • Gravação apenas de arquivos do tipo texto (tipos BLOB, como vídeos e imagens, não são suportados), com esquema em tabela bidimensional.

  • Gravação de dados em arquivos semelhantes a CSV com delimitadores personalizados.

  • Gravação de dados nos formatos ORC e PARQUET.

    Nota

    A compressão SNAPPY é suportada no modo de script.

  • Gravação multithread, em que cada thread grava em um subarquivo diferente.

  • Rotação de arquivos: quando um arquivo excede o tamanho especificado, o sistema passa a usar um novo arquivo.

  • Gravações simultâneas em um único arquivo.

  • Tipos de dados nativos (o gravador escreve todos os dados nos objetos do Amazon S3 como tipo STRING).

  • Operações de gravação se a classe de armazenamento do bucket do Amazon S3 for Deep Archive.

  • Objetos (Arquivos) maiores que 100 GB.

Adicionar uma fonte de dados

Antes de desenvolver uma tarefa de sincronização no DataWorks, adicione a fonte de dados necessária seguindo as instruções em Gerenciamento de fontes de dados. Consulte as descrições dos parâmetros no console do DataWorks para entender o significado de cada parâmetro 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 configuração de uma tarefa de sincronização, consulte os guias a seguir.

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

Apêndice: Exemplo 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 com o editor de código, defina os parâmetros relacionados no script conforme os requisitos unificados de formato. Para mais informações, consulte Configuração do modo de script. As informações a seguir descrevem os parâmetros obrigatórios para as fontes de dados ao utilizar o editor de código em tarefas de sincronização em lote.

Exemplo 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.
                "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

Parâmetro

Descrição

Obrigatório

Valor padrão

datasource

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

Sim

N/A

Object

Informações do objeto no Amazon S3. É possível especifique vários objetos. Por exemplo, se o bucket contiver uma pasta de teste 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 multithread. O número de threads simultâneas é definido pelo número de canais.

  • Ao usar curingas, o leitor do Amazon S3 tenta listar vários objetos. Por exemplo, abc*[0-9] corresponde a abc0, abc1, abc2, abc3, e assim por diante. O uso de curingas pode causar erros de falta de memória. Recomendamos evitar o uso de curingas.

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

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

Sim

N/A

column

Lista de colunas a serem lidas. O parâmetro type especifica o tipo de dados da origem. O parâmetro index especifica o número da coluna no arquivo de texto (começando em 0). O parâmetro value indica que a coluna atual é uma constante. Em vez de ler dados do arquivo de source, o sistema gera a coluna com base no valor especificado.

Por padrão, é possível ler todos os dados como tipo String. Exemplo de configuração:

column": ["*"]

Também é possível especifique informações de coluna. Exemplo de configuração:

"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.    
}
Nota

Para as informações de column especificadas, o campo type é obrigatório, e você deve especifique index ou value.

Sim

Todos os dados são lidos como tipo STRING.

fieldDelimiter

Delimitador de coluna para leitura de dados.

Nota

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

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

Sim

Valor padrão: (,)

compress

Tipo de compressão. Por padrão, este parâmetro fica vazio, indicando que nenhuma compressão é aplicada. Os tipos de compressão suportados são gzip, bzip2 e zip.

Não

Sem compressão

encoding

Codificação dos arquivos a serem lidos.

Não

utf-8

nullFormat

Strings padrão em arquivos de texto não podem representar null (ponteiro nulo). O sistema de sincronização de dados usa nullFormat para definir quais strings representam null. Por exemplo, se você definir nullFormat="null" e os dados de source forem "null", o sistema de sincronização de dados tratará isso 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

Configuração para leitura de arquivos CSV. Este parâmetro é do tipo Map. O CsvReader lê arquivos CSV e oferece várias configurações. Se este parâmetro não for configurado, valores padrão serão usados.

Não

N/A

Exemplo 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

Parâmetro

Descrição

Obrigatório

Valor padrão

datasource

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

Sim

N/A

object

Nome do objeto de destino.

Sim

N/A

fileFormat

Formatos de arquivo suportados:

  • csv: Apenas o formato CSV estrito é suportado. Se os dados a serem gravados contiverem delimitadores de coluna, eles serão escapados com base na sintaxe de escape CSV. O caractere de escape é a aspa dupla (").

  • text: Usa delimitadores de coluna para separar dados de forma simples. Dados que contêm 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 especificado são excluídos. Por exemplo, se você definir "object":"abc", todos os objetos cujos nomes começam com abc serão excluídos.

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

  • nonConflict: Um erro será relatado se existir qualquer objeto com prefixo correspondente no caminho especificado. Por exemplo, se você definir "object":"abc" e já existir um objeto chamado abc123, um erro será gerado.

Sim

append

fieldDelimiter

Delimitador de coluna para gravação de dados.

Não

Valor padrão: (,)

lineDelimiter

Delimitador de linha para gravação de dados.

Não

Valor padrão: (\n)

compress

Tipo de compressão. Por padrão, este parâmetro fica vazio, indicando que nenhuma compressão é aplicada.

  • Quando fileFormat está definido como text ou csv, GZIP e BZIP2 são suportados.

  • Quando fileFormat está definido como parquet ou orc, a compressão SNAPPY é suportada.

Não

Sem compressão

nullFormat

Strings padrão em arquivos de texto não podem representar null (ponteiro nulo). O sistema de sincronização de dados usa nullFormat para definir quais strings representam null. Por exemplo, se você definir nullFormat="null" e os dados de source forem null, o sistema de sincronização de dados tratará isso como um campo nulo.

Não

N/A

header

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

Não

N/A

writeSingleObject

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

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

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

Não

false

encoding

Codificação dos arquivos a serem gravados.

Não

utf-8

column

Configuração de coluna para gravação de dados.

  • Quando fileFormat está definido como csv ou text, configure o parâmetro column com placeholders numéricos. Exemplo:

    "column":[
     "0",
     "1"
     ]
  • Quando fileFormat está definido 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