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 É 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
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 |
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:
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.
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
efs.s3n.awsSecretAccessKey
conforme mostrado no exemplo a seguir; as propriedadesfs.s3a.access.key
efs.s3a.secret.key
não são suportadas.Para fazer referência ao sistema de arquivos
s3a://
, defina as propriedadesfs.s3n.awsAccessKeyId
efs.s3n.awsSecretAccessKey
em um arquivo de configuração XML do Hadoop ou chamesc.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)
Codificar key em URI: por exemplo, o URI
s3a://$AccessKey:$SecretKey@bucket/path/to/dir
codifica o par key (AccessKey
,SecretKey
).