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
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
- SQL
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 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:
-
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.
-
Definir a chave em Hadoop conf: Especificar a chave AWS nas propriedades de configuraçãoHadoop.
-
Ao usar a chave AWS para acessar 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 compatíveis. -
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 Spark no Hadoop.Scalasc.hadoopConfiguration.set("fs.s3n.awsAccessKeyId", "$AccessKey")
sc.hadoopConfiguration.set("fs.s3n.awsSecretAccessKey", "$SecretKey")Pythonsc._jsc.hadoopConfiguration().set("fs.s3n.awsAccessKeyId", ACCESS_KEY)
sc._jsc.hadoopConfiguration().set("fs.s3n.awsSecretAccessKey", SECRET_KEY)
- Codificar a chave no URI : Por exemplo, o URI
s3a://$AccessKey:$SecretKey@bucket/path/to/dir
codifica o par key (AccessKey
,SecretKey
).