Pular para o conteúdo principal

Amazon S3 Select

O Amazon S3 Select permite recuperar apenas os dados necessários de um objeto. O conector Databricks S3 Select oferece uma Apache Spark fonte de dados que aproveita o S3 Select. Quando o senhor usa um S3 Select fonte de dados, a seleção de filtros e colunas em um DataFrame é reduzida, economizando a largura de banda de dados do S3.

Limitações

O Amazon S3 Select é compatível com os seguintes formatos de arquivo:

  • Arquivos CSV e JSON
  • Codificação UTF-8
  • GZIP ou sem compressão

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

  • Tipos complexos (matrizes e objetos) não podem ser usados em JSON
  • A inferência de esquema não é suportada
  • A divisão de arquivos não é suportada, no entanto, há suporte para registros de várias linhas
  • Não há suporte para pontos de montagem DBFS
important

Databricks É altamente recomendável que o senhor use S3AFileSystem fornecido por Databricks, que é o default para os esquemas de sistema de arquivos s3a://, s3:// e s3n:// em Databricks Runtime. Se precisar de ajuda com a migração para S3AFileSystem, entre em contato com o suporte Databricks ou com a equipe Databricks account .

Uso

Scala
sc.read.format("s3select").schema(...).options(...).load("s3://bucket/filename")

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 as opções para todos os tipos de arquivos e as opções específicas para CSV e JSON.

Opções genéricas

Nome da opção

Valor padrão

Descrição

Formato de arquivo

'automático'

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

Tipo de compressão

'nenhum'

Codec de compressã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

''

Cadeias de caracteres que representam valores nulos na entrada

cabeçalho

falso

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

Comentário

'#'

As linhas que começam com o valor desses parâmetros são ignoradas

Delimitador de registros

'n'

Registros de separação de caracteres em um arquivo

Delimitador

','

Campos de separação de caracteres em um registro

quote

'”'

Caractere usado para citar valores contendo caracteres reservados

escape

'”'

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

Permitir delimitador de registro entre aspas

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

O senhor pode usar os métodos de autenticação S3 (chave e perfil de instância) disponíveis em Databricks; recomendamos que use o perfil de instância. Há três maneiras de fornecer as credenciais:

  1. default Credential Provider Chain (opção recomendada): AWS credenciais são recuperadas automaticamente por meio da DefaultAWSCredentialsProviderChain. Se o senhor usar o perfil de instância para se autenticar em S3, deverá usar esse método. Outros métodos de fornecimento de credenciais (métodos 2 e 3) têm precedência sobre este default.

  2. Definir a chave em Hadoop conf: Especificar a chave AWS nas propriedades de configuraçãoHadoop.

important
  • Ao usar a chave AWS para acessar 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 compatíveis.

  • 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 Spark no Hadoop.

    Scala
    sc.hadoopConfiguration.set("fs.s3n.awsAccessKeyId", "$AccessKey")
    sc.hadoopConfiguration.set("fs.s3n.awsSecretAccessKey", "$SecretKey")
    Python
    sc._jsc.hadoopConfiguration().set("fs.s3n.awsAccessKeyId", ACCESS_KEY)
    sc._jsc.hadoopConfiguration().set("fs.s3n.awsSecretAccessKey", SECRET_KEY)
  1. Codificar a chave no URI : Por exemplo, o URI s3a://$AccessKey:$SecretKey@bucket/path/to/dir codifica o par key (AccessKey, SecretKey).