Filtragem e recuperação de dados usando o Amazon S3 Select - Amazon Simple Storage Service

Filtragem e recuperação de dados usando o Amazon S3 Select

Com o Amazon S3 Select, é possível usar instruções de linguagem de consulta estruturada (SQL) para filtrar o conteúdo de um objeto do Amazon S3 e recuperar somente o subconjunto de dados necessário. Ao usar o Amazon S3 Select para filtrar esses dados, é possível reduzir a quantidade de dados transferidos pelo Amazon S3. Isso reduz o custo e a latência de recuperação desses dados.

O Amazon S3 Select só permite que você consulte um objeto por vez. Ele funciona em um objeto armazenado em formato CSV, JSON ou Apache Parquet. Ele também funciona em um objeto compactado com GZIP ou BZIP2 (somente para objetos CSV e JSON) e um objeto criptografado do lado do servidor. Você pode especificar o formato dos resultados como CSV ou JSON e determinar como os registros do resultado são delimitados.

Expressões SQL são passadas para o Amazon S3 na solicitação. O Amazon S3 Select é compatível com um subconjunto de SQL. Para obter mais informações sobre os elementos SQL compatíveis com o Amazon S3 Select, consulte Referência SQL para o Amazon S3 Select.

É possível realizar consultas SQL usando o console do Amazon S3, a AWS Command Line Interface (AWS CLI), a operação de API REST SelectObjectContent ou os SDKs da AWS.

nota

O console do Amazon S3 limita a quantidade de dados retornados em 40 MB. Para recuperar mais dados, use a AWS CLI ou a API.

Requisitos e limites

Estes são os requisitos para o uso do Amazon S3 Select:

  • É necessário ter permissão s3:GetObject para o objeto sendo consultado.

  • Se o objeto consultado for criptografado por meio da criptografia do lado do servidor com chaves fornecidas pelo cliente (SSE-C), será necessário usar https e fornecer a chave de criptografia na solicitação.

Os seguintes limites se aplicam ao usar o Amazon S3 Select:

  • O S3 Select pode consultar somente um objeto por solicitação.

  • O tamanho máximo de uma expressão SQL é 256 KB.

  • O tamanho máximo de um registro na entrada ou no resultado é de 1 MB.

  • O Amazon S3 Select só pode emitir dados aninhados usando o formato de saída JSON.

  • Não é possível consultar um objeto armazenado nas classes de armazenamento S3 Glacier Flexible Retrieval, S3 Glacier Deep Archive ou Reduced Redundancy Storage (RRS). Também não é possível consultar um objeto armazenado no nível S3 Intelligent-Tiering Archive Access ou S3 Intelligent-Tiering Deep Archive Access. Para obter mais informações sobre classes de armazenamento, consulte Uso de classes de armazenamento do Amazon S3.

Limitações adicionais se aplicam ao usar o Amazon S3 Select com um objeto Parquet:

  • O Amazon S3 Select aceita somente a compactação colunar com GZIP ou Snappy. O Amazon S3 Select não aceita a compactação de objetos inteiros no caso de um objeto Parquet.

  • O Amazon S3 Select não é compatível com a saída do Parquet. É necessário especificar o formato de saída como CSV ou JSON.

  • O tamanho máximo do grupo de linhas não compactadas é 512 MB.

  • É necessário usar os tipos de dados especificados no esquema do objeto.

  • A seleção em um campo repetido retorna apenas o último valor.

Criar uma solicitação

Ao criar uma solicitação, você fornece detalhes do objeto consultado usando um objeto InputSerialization. Forneça detalhes sobre como os resultados serão retornados usando um objeto OutputSerialization. Inclua também a expressão SQL que o Amazon S3 usa para filtrar a solicitação.

Para obter mais informações sobre como criar uma solicitação do Amazon S3 Select, consulte SelectObjectContent na Referência de API do Amazon Simple Storage Service. Também é possível um exemplo de código do SDK nas seções a seguir.

Solicitações usando intervalos de verificação

Com o Amazon S3 Select, é possível verificar um subconjunto de um objeto especificando um intervalo de bytes a ser consultado. Esse recurso permite paralelizar a verificação de todo o objeto dividindo o trabalho em solicitações separadas do Amazon S3 Select para uma série de intervalos de verificação não sobrepostos.

Os intervalos de verificação não precisam estar alinhados aos limites de registro. Uma solicitação de intervalo de verificação do Amazon S3 Select é executada no intervalo de bytes especificado. Um registro que começa no intervalo de verificação especificado, mas ultrapassa o intervalo de verificação, será processado pela consulta. Por exemplo, veja abaixo um objeto do Amazon S3 que contém uma série de registros em um formato CSV delimitado por linha:

A,B C,D D,E E,F G,H I,J

Suponha que você esteja usando o parâmetro ScanRange do Amazon S3 Select e inicie no (byte) 1 e termine no (byte) 4. Assim, o intervalo de verificação começaria em “,” e faria a verificação até o final do registro, começando em C. A solicitação de intervalo de verificação retornará o resultado C, D porque esse é o final do registro.

As solicitações de intervalo de verificação do Amazon S3 Select são compatíveis com objetos Parquet, CSV (sem delimitadores entre aspas) ou JSON (somente no modo LINES). Os objetos CSV e JSON devem estar descompactados. Para objetos JSON e CSV baseados em linha, quando um intervalo de verificação é especificado como parte da solicitação do Amazon S3 Select, todos os registros que começam no intervalo de verificação são processados. Para objetos Parquet, todos os grupos de linhas que começam no intervalo de verificação solicitado são processados.

As solicitações de intervalo de verificação do Amazon S3 Select estão disponíveis para uso com a AWS CLI, a API do Amazon S3 e AWS SDKs. É possível usar o parâmetro ScanRange na solicitação do Seleção do Amazon S3 desse recurso. Para obter mais informações, consulte SelectObjectContent na Referência da API do Amazon Simple Storage Service.

Erros

O Amazon S3 Select retorna um código de erro e uma mensagem de erro associada quando um problema é encontrado ao tentar executar uma consulta. Para obter uma lista de códigos de erro e descrições, consulte a seção Lista de Códigos de erro de conteúdo de objetos SELECT da página Respostas de erro na Referência de APIs do Amazon Simple Storage Service.

Para obter mais informações sobre o Amazon S3 Select, consulte os tópicos a seguir.