Seleção do Amazon S3

O Amazon S3 Select permite recuperar apenas os dados necessários de um objeto. O conector Databricks S3 Select fornece uma fonte de dados Apache Spark que aproveita o S3 Select. Quando você usa uma fonte de dados S3 Select, a seleção de filtro e coluna em um DataFrame é pressionada, economizando largura de banda de dados do S3.

Limitações

O Amazon S3 Select oferece suporte aos seguintes formatos de arquivo:

  • Arquivos CSV e JSON

  • Codificação UTF-8

  • GZIP ou sem compactação

O conector Databricks S3 Select tem as seguintes limitações:

  • Tipos complexos (arrays e objetos) não podem ser usados em JSON

  • A inferência de esquema não é compatível

  • A divisão de arquivos não é suportada, porém registros multilinha são suportados

  • Os pontos de montagem DBFS não são suportados

Importante

Databricks Runtime 7.0, que inclui uma atualização do AWS SDK para 1.11.655, não suporta org.apache.hadoop.fs.s3native.NativeS3FileSystem e org.apache.hadoop.fs.s3.S3FileSystem para acessar S3.

A Databricks incentiva fortemente que você use S3AFileSystem fornecido pela Databricks, que é o default para esquemas de sistema de arquivos s3a://, s3:// e s3n:// no Databricks Runtime. Se precisar de ajuda com a migração para S3AFileSystem, entre em contato com o suporte do Databricks ou com a equipe da sua account do Databricks.

Uso

sc.read.format("s3select").schema(...).options(...).load("s3://bucket/filename")
CREATE TABLE name (...) USING S3SELECT LOCATION 's3://bucket/filename' [ OPTIONS (...) ]

Se a extensão do nome do arquivo for .csv ou .json, o formato será detectado automaticamente; caso contrário, você deverá fornecer a opção FileFormat .

Opções

Esta seção descreve opções para todos os tipos de arquivo e opções específicas para CSV e JSON.

Opções genéricas

Nome da opção

Valor padrão

Descrição

Formato de arquivo

'auto'

Tipo de arquivo de entrada ('auto', 'csv' ou ' JSON')

Tipo de compressão

'nenhum'

Codec de compactação usado pelo arquivo de entrada ('none' ou 'gzip')

Opções específicas de CSV

Nome da opção

Valor padrão

Descrição

nullValue

''

strings de caracteres representando valores nulos na entrada

cabeçalho

falso

Se deve-se pular a primeira linha da entrada (o conteúdo potencial do cabeçalho é ignorado)

Comentário

'#'

As linhas que começam com o valor deste parâmetro são ignoradas

Delimitador de registro

'e'

Caractere separando registros em um arquivo

Delimitador

','

Caractere separando campos em um registro

quote

'”'

Caractere usado para citar valores contendo caracteres reservados

escape

'”'

Caractere usado para escapar do caractere de citação entre aspas

PermitirQuotedRecordDelimitador

falso

Se os valores podem conter delimitadores de registro entre aspas

Opções específicas de JSON

Nome da opção

Valor padrão

Descrição

Tipo

documento

Tipo de entrada ('documento' ou 'linhas')

Autenticação S3

Você pode usar os métodos de autenticação S3 (key e instance profile) disponíveis no Databricks; recomendamos que você use instance profile. Existem três maneiras de fornecer as credenciais:

  1. cadeia de provedores de credenciaisdefault (opção recomendada): as credenciais da AWS são recuperadas automaticamente por meio do DefaultAWSCredentialsProviderChain. Se você usar instance profile para autenticar no S3, deverá usar este método. Outros métodos de fornecimento de credenciais (métodos 2 e 3) têm precedência sobre este default.

  2. Definir key no Hadoop conf: Especifique key AWS nas propriedades de configuração do Hadoop.

    Importante

    • Ao usar key AWS para acessar o S3, sempre defina as propriedades de configuração fs.s3n.awsAccessKeyId e fs.s3n.awsSecretAccessKey conforme mostrado no exemplo a seguir; as propriedades fs.s3a.access.key e fs.s3a.secret.key não são suportadas.

    • Para fazer referência ao sistema de arquivos s3a:// , defina as propriedades fs.s3n.awsAccessKeyId e fs.s3n.awsSecretAccessKey em um arquivo de configuração XML do Hadoop ou chame sc.hadoopConfiguration.set() para definir a configuração global do Hadoop do Spark.

      sc.hadoopConfiguration.set("fs.s3n.awsAccessKeyId", "$AccessKey")
      sc.hadoopConfiguration.set("fs.s3n.awsSecretAccessKey", "$SecretKey")
      
      sc._jsc.hadoopConfiguration().set("fs.s3n.awsAccessKeyId", ACCESS_KEY)
      sc._jsc.hadoopConfiguration().set("fs.s3n.awsSecretAccessKey", SECRET_KEY)
      
  3. Codificar key em URI: por exemplo, o URI s3a://$AccessKey:$SecretKey@bucket/path/to/dir codifica o par key (AccessKey, SecretKey).