

# Usar arquivos no Amazon S3 para a origem dos dados
<a name="edit-jobs-source-s3-files"></a>

Se você escolher o Amazon S3 como sua origem dos dados, poderá escolher:
+ Um banco de dados e tabela do Data Catalog.
+ Um bucket, pasta ou arquivo no Amazon S3.

Se você usar um bucket do Amazon S3 como origem dos dados, o AWS Glue detectará o esquema dos dados no local especificado a partir de um dos arquivos ou usando o arquivo especificado como um arquivo de exemplo. A detecção de esquema ocorre quando você usa o botão **Infer schema** (Inferir esquema). Se você alterar o local do Amazon S3 ou o arquivo de exemplo, escolha **Infer schema** (Inferir esquema) novamente para realizar a detecção de esquema usando as novas informações.

**Para configurar um nó de origem dos dados que lê diretamente de arquivos no Amazon S3**

1. Vá para o editor visual para um trabalho novo ou salvo.

1. Escolha um nó de origem dos dados no diagrama de trabalho para uma origem do Amazon S3.

1. Escolha a guia **Data source properties** (Propriedades da origem dos dados) e insira as seguintes informações:
   + **S3 source type** (Tipo de origem do S3): (somente para origens de dados do Amazon S3) escolha a opção **S3 location** (Localização do S3).
   + **S3 URL** (URL do S3): insira o caminho para o bucket, pasta ou arquivo do Amazon S3 que contém os dados do seu trabalho. Você pode escolher **Browse S3** (Procurar no S3) para selecionar o caminho a partir dos locais disponíveis para sua conta. 
   + **Recursive** (Recursivo): escolha essa opção se desejar que o AWS Glue leia dados de arquivos em pastas filhas no local do S3. 

     Se as pastas filhas contiverem dados particionados, o AWS Glue não adicionará ao Data Catalog nenhuma informação de partição especificada nos nomes de pastas. Por exemplo, considere as seguintes pastas no Amazon S3:

     ```
     S3://sales/year=2019/month=Jan/day=1
     S3://sales/year=2019/month=Jan/day=2
     ```

     Se você escolher **Recursive** (Recursivo) e selecionar a pasta `sales` como a sua localização do S3, o AWS Glue lerá os dados em todas as pastas filhas, mas não criará partições para o ano, mês ou dia.
   + **Data format** (Formato de dados): escolha o formato no qual os dados são armazenados. Você pode escolher JSON, CSV ou Parquet. O valor selecionado informa ao trabalho do AWS Glue como ler os dados do arquivo de origem.
**nota**  
Se você não selecionar o formato correto para os seus dados, O AWS Glue poderá inferir o esquema corretamente, mas o trabalho não poderá analisar corretamente os dados do arquivo de origem.

     Você pode inserir opções de configuração adicionais, dependendo do formato escolhido. 
     + **JSON** (JavaScript Object Notation)
       + **JsonPath** (Caminho Json): insira um caminho JSON que aponta para um objeto usado para definir um esquema de tabela. Expressões de caminho JSON sempre se referem a uma estrutura JSON da mesma forma como expressões XPath são usadas em combinação com um documento XML. O “objeto de membro raiz” no caminho JSON é sempre referido como `$`, mesmo que seja um objeto ou matriz. O caminho JSON pode ser escrito na notação de pontos ou de colchetes.

         Para obter mais informações sobre operadores do caminho JSON, consulte [JsonPath](https://github.com/json-path/JsonPath) no site do GitHub.
       + **Records in source files can span multiple lines** (Registros em arquivos de origem podem abranger várias linhas): escolha essa opção se um único registro puder abranger várias linhas no arquivo CSV.
     + **CSV** (comma-separated values)
       + **Delimiter** (Delimitador): insira um caractere para indicar o que separa cada entrada de coluna na linha, por exemplo, `;` ou `,`.
       + **Escape character** (Caractere de escape): insira um caractere usado como caractere de escape. Ele indica que o caractere que segue imediatamente o caractere de escape deve ser entendido literalmente e não deve ser interpretado como um delimitador.
       + **Quote character** (Caractere de aspas): insira o caractere usado para agrupar strings separadas em um único valor. Por exemplo, você escolheria **aspas duplas (")** se tiver valores como `"This is a single value"` em seu arquivo CSV.
       + **Records in source files can span multiple lines** (Registros em arquivos de origem podem abranger várias linhas): escolha essa opção se um único registro puder abranger várias linhas no arquivo CSV.
       + **First line of source file contains column headers** (A primeira linha do arquivo de origem contém cabeçalhos de coluna): escolha essa opção se a primeira linha do arquivo CSV contiver cabeçalhos de coluna em vez de dados.
     + **Parquet** (Apache Parquet columnar storage)

       Não há configurações adicionais a configurar para dados armazenados no formato Parquet.
     + **Apache Hudi**

       Não há configurações adicionais a definir para dados armazenados no formato Apache Hudi.
     + **Delta Lake**

       Não há configurações adicionais a definir para dados armazenados no formato Delta Lake.
     + **Excel**

       Não há configurações adicionais a definir para dados armazenados no formato Excel.
   + **Partition predicate** (Predicato de partição): para particionar os dados que são lidos a partir da origem dos dados, introduza uma expressão booliana baseada no Spark SQL que inclua apenas as colunas de particionamento. Por exemplo, .: `"(year=='2020' and month=='04')"`
   + **Advanced options** (Opções avançadas): expanda essa seção se desejar que AWS Glue detecte o esquema de seus dados com base em um arquivo específico. 
     + **Schema inference** (Inferência do esquema): escolha a opção **Choose a sample file from S3**(Escolher um arquivo de exemplo no S3), se desejar usar um arquivo específico em vez de deixar que o AWS Glue escolha um por você. A inferência de esquema não está disponível para a fonte Excel.
     + **Auto-sampled file** (Arquivo amostrado automaticamente): insira o caminho para o arquivo no Amazon S3 a ser usado para inferir o esquema.

     Se estiver editando um nó de origem dos dados e alterando o arquivo de exemplo selecionado, escolha **Reload schema** (Recarregar esquema) para detectar o esquema usando o novo arquivo de exemplo.

1. Selecione o botão **Infer schema** (Inferir esquema) para detectar o esquema dos arquivos de origem no Amazon S3. Se você alterar o local do Amazon S3 ou o arquivo de exemplo, deve escolher **Infer schema** (Inferir esquema) novamente para realizar a detecção do esquema usando as novas informações.