Arquivos de dados para consultas no Amazon Redshift Spectrum
Esta seção descreve como criar arquivos de dados no Amazon S3 em um formato compatível com o Redshift Spectrum.
Os arquivos de dados que você usa para consultas no Amazon Redshift Spectrum geralmente são dos mesmos tipos dos arquivos usados para outras aplicações. Por exemplo, os mesmos tipos de arquivo são usados com o Amazon Athena, o Amazon EMR e o Amazon QuickSight. Você pode consultar os dados em seu formato original diretamente no Amazon S3. Para isso, os arquivos de dados devem estar em um formato compatível com o Redshift Spectrum e localizados em um bucket do Amazon S3 que possa ser acessado pelo cluster.
O bucket do Amazon S3 com os arquivos de dados deve estar na mesma região da AWS do cluster do Amazon Redshift. Para obter informações sobre as regiões da AWS compatíveis, consulte Regiões do Amazon Redshift Spectrum.
Formatos de dados do Redshift Spectrum
O Redshift Spectrum é compatível com os formatos de dados estruturados e semiestruturados a seguir.
Formato do arquivo | Colunar | Suporte a leituras paralelas | Unidade dividida |
---|---|---|---|
Parquet | Sim | Sim | Grupo de linhas |
ORC | Sim | Sim | Stripe |
RCFile | Sim | Sim | Grupo de linhas |
TextFile | Não | Sim | Linha |
SequenceFile | Não | Sim | Linha ou bloco |
RegexSerde | Não | Sim | Linha |
OpenCSV | Não | Sim | Linha |
AVRO | Não | Sim | Bloquear |
Ion | Não | Não | N/D |
JSON | Não | Não | N/D |
Na tabela anterior, os cabeçalhos indicam o seguinte:
-
Colunar: se o formato do arquivo armazena dados fisicamente em uma estrutura orientada em colunas, em vez de uma estrutura orientada em linhas.
-
Suporte a leituras paralelas: se o formato de arquivo oferece suporte à leitura de blocos individuais dentro do arquivo. A leitura de blocos individuais permite o processamento distribuído de um arquivo em várias solicitações independentes do Redshift Spectrum, em vez de ter de ler o arquivo completo em uma única solicitação.
-
Unidade dividida: para formatos de arquivo que podem ser lidos em paralelo, a unidade dividida é o menor bloco de dados que uma única solicitação do Redshift Spectrum consegue processar.
nota
Os valores de data e hora nos arquivos de texto devem estar no formato
yyyy-MM-dd HH:mm:ss.SSSSSS
, como mostra o seguinte valor de data e hora de exemplo:2017-05-01 11:30:59.000000
.Recomendamos usar um formato de arquivo colunar para o armazenamento, como o Apache Parquet. Com um formato de arquivo colunar para o armazenamento, é possível minimizar a transferência de dados do Amazon S3 selecionando apenas as colunas necessárias.
Tipos de compactação do Redshift Spectrum
Para reduzir o espaço de armazenamento, melhorar a performance e minimizar os custos, é altamente recomendável compactar os arquivos de dados. O Redshift Spectrum reconhece os tipos de compactação de arquivos com base na extensão de arquivo.
O Redshift Spectrum é compatível com os tipos de compactação e extensões a seguir.
Algoritmo de compactação | Extensão de arquivo | Suporte a leituras paralelas |
---|---|---|
Gzip | .gz | Não |
Bzip2 | .bz2 | Sim |
Snappy | .snappy | Não |
Você pode aplicar compactação em diferentes níveis. O mais comum é compactar um arquivo inteiro ou blocos individuais dentro de um arquivo. A compactação de formatos colunares no nível do arquivo não gera benefícios de performance.
Para que o Redshift Spectrum consiga ler um arquivo em paralelo, as seguintes afirmações devem ser verdadeiras:
-
O formato de arquivo oferece suporte a leituras paralelas.
-
A compactação no nível do arquivo, se houver, oferece suporte a leituras paralelas.
Não importa se as unidades divididas individuais dentro de um arquivo são compactadas usando um algoritmo de compactação que pode ser lido em paralelo, pois cada unidade dividida é processada por uma única solicitação do Redshift Spectrum. Um exemplo disso são os arquivos Parquet compactados por Snappy. Grupos de linhas individuais dentro do arquivo Parquet são compactados usando Snappy, mas a estrutura de nível superior do arquivo permanece descompactada. Nesse caso, o arquivo pode ser lido em paralelo, pois cada solicitação do Redshift Spectrum consegue ler e processar grupos de linhas individuais do Amazon S3.
Encriptação do Redshift Spectrum
O Redshift Spectrum descriptografa os arquivos de dados de forma transparente usando as seguintes opções de criptografia:
-
Criptografia no lado do servidor (SSE-S3) usando uma chave de criptografia AES-256 gerenciada pelo Amazon S3.
-
Criptografia no lado do servidor com chaves gerenciadas pelo AWS Key Management Service (SSE-KMS).
O Redshift Spectrum não é compatível com criptografia no lado do cliente no Amazon S3. Para obter mais informações sobre criptografia no lado do servidor, consulte Proteger dados usando criptografia no lado do servidor no Guia do usuário do Amazon Simple Storage Service.
O Amazon Redshift usa o processamento paralelo maciço (MPP) para executar com rapidez consultas complexas que operam com grandes quantidades de dados. O Redshift Spectrum amplia o mesmo princípio para as consultas com dados externos, usando várias instâncias do Redshift Spectrum para fazer a varredura de arquivos. Coloque os arquivos em uma pasta separada para cada tabela.
Você pode otimizar os dados para o processamento em paralelo executando as seguintes ações:
-
Se o formato de arquivo ou a compactação não oferecer suporte à leitura em paralelo, divida arquivos grandes em vários arquivos menores. Recomendamos o uso de tamanhos de arquivo entre 64 MB e 1 GB.
-
Mantenha todos os arquivos com aproximadamente o mesmo tamanho. Se alguns arquivos forem muito maiores do que os outros, o Redshift Spectrum não poderá distribuir o workload uniformemente.