Global outage event
If you're experiencing issues with your AWS services, then please refer to the AWS Health Dashboard. You can find the overall status of ongoing outages, the health of AWS services, and the latest updates from AWS engineers.
Como ajusto o número ou o tamanho dos arquivos quando executo uma consulta CTAS no Amazon Athena?
Quando executo uma consulta CREATE TABLE AS SELECT (CTAS) no Amazon Athena, quero definir o número de arquivos ou a quantidade de dados para cada arquivo.
Resolução
Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
É possível usar o bucketing em uma consulta CTAS para controlar o número de arquivos de saída. No entanto, o número de arquivos criados pode nem sempre corresponder ao número especificado de buckets. O atributo de bucketing pode agrupar dados semelhantes, mas não pode controlar com precisão a contagem de arquivos.
A resolução a seguir usa o conjunto de dados públicos diários da Rede histórica global de climatologia, s3://noaa-ghcn-pds/csv.gz/. Para obter mais informações, consulte Visualize over 200 years of global climate data using Amazon Athena and Amazon Quick Sight (Visualize mais de 200 anos de dados climáticos globais usando o Amazon Athena e o Amazon Quick Sight).
Observação: nos comandos de exemplo a seguir, substitua os seguintes valores pelos seus valores:
external_location: Local do Amazon Simple Storage Service (Amazon S3) em que você salvou sua consulta de CTAS.
formato: O formato que você deseja para a saída, como ORC, PARQUET, AVRO, JSON ou TEXTFILE.
bucket_count: O número de buckets que você deseja.
bucketed_by: O campo para fazer o hash e salvar os dados no bucket, por exemplo, yearmonthday.
Examine o conjunto de dados
Para verificar o número de arquivos e o tamanho do conjunto de dados, execute o seguinte comando ls:
aws s3 ls s3://noaa-ghcn-pds/csv.gz/ --summarize --recursive --human-readable
Observação: substitua s3://noaa-ghcn-pds/csv.gz/ pelo caminho do seu bucket do s3.
Exemplo de saída:
2019-11-30 01:58:05 3.3 KiB csv.gz/1763.csv.gz 2019-11-30 01:58:06 3.2 KiB csv.gz/1764.csv.gz 2019-11-30 01:58:06 3.3 KiB csv.gz/1765.csv.gz 2019-11-30 01:58:07 3.3 KiB csv.gz/1766.csv.gz ... 2019-11-30 02:05:43 199.7 MiB csv.gz/2016.csv.gz 2019-11-30 02:05:50 197.7 MiB csv.gz/2017.csv.gz 2019-11-30 02:05:54 197.0 MiB csv.gz/2018.csv.gz 2019-11-30 02:05:57 168.8 MiB csv.gz/2019.csv.gz Total Objects: 257 Total Size: 15.4 GiB
Crie o ambiente
Conclua as etapas a seguir:
-
Para criar uma tabela, execute o seguinte comando:
CREATE EXTERNAL TABLE historic_climate_gz( id string, yearmonthday int, element string, temperature int, m_flag string, q_flag string, s_flag string, obs_time int) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION 's3://noaa-ghcn-pds/csv.gz/' -
Para testar a tabela, execute o seguinte comando:
SELECT * FROM historic_climate_gz LIMIT 10A saída mostra 10 linhas do conjunto de dados.
Depois de criar o ambiente, use os métodos a seguir para modificar o conjunto de dados ao executar consultas CTAS.
Modifique o número de arquivos no conjunto de dados
É uma prática recomendada agrupar os dados em uma coluna com alta cardinalidade e valores distribuídos uniformemente. Para obter mais informações, consulte Benefícios do bucketing.
Conclua as etapas a seguir:
-
Para converter o conjunto de dados em 20 arquivos, execute o seguinte comando:
CREATE TABLE "historic_climate_gz_20_files" WITH ( external_location = 's3://awsexamplebucket/historic_climate_gz_20_files/', format = 'TEXTFILE', bucket_count=20, bucketed_by = ARRAY['yearmonthday'] ) AS SELECT * FROM historic_climate_gzObservação: o exemplo anterior usa o campo yearmonthday.
-
Para confirmar se o bucket contém o número desejado de arquivos, execute o seguinte comando ls:
aws s3 ls s3://awsexamplebucket/historic_climate_gz_20_files/ --summarize --recursive --human-readableExemplo de saída:
Total Objects: 20 Total Size: 15.6 Gib
Defina o tamanho aproximado de cada arquivo
Conclua as etapas a seguir:
-
Determine o número de buckets que você deve usar para atingir o número de arquivos desejados. Por exemplo, para dividir o conjunto de dados de 15,4 GB em arquivos de 2 GB, você precisa ter 8 arquivos (15,4 / 2 = 7,7, arredondados para 8).
-
Para criar uma nova tabela de bucket, execute o seguinte comando:
CREATE TABLE "historic_climate_gz_2GB_files" WITH ( external_location = 's3://awsexamplebucket/historic_climate_gz_2GB_file/', format = 'TEXTFILE', bucket_count=8, bucketed_by = ARRAY['yearmonthday']) AS SELECT * FROM historic_climate_gz -
Para confirmar se o conjunto de dados contém o número desejado de arquivos, execute o seguinte comando ls:
aws s3 ls s3://awsexamplebucket/historic_climate_gz_2GB_file/ --summarize --recursive --human-readableExemplo de saída:
2019-09-03 10:59:20 1.7 GiB historic_climate_gz_2GB_file/20190903_085819_00005_bzbtg_bucket-00000.gz 2019-09-03 10:59:20 2.0 GiB historic_climate_gz_2GB_file/20190903_085819_00005_bzbtg_bucket-00001.gz 2019-09-03 10:59:20 2.0 GiB historic_climate_gz_2GB_file/20190903_085819_00005_bzbtg_bucket-00002.gz 2019-09-03 10:59:19 1.9 GiB historic_climate_gz_2GB_file/20190903_085819_00005_bzbtg_bucket-00003.gz 2019-09-03 10:59:17 1.7 GiB historic_climate_gz_2GB_file/20190903_085819_00005_bzbtg_bucket-00004.gz 2019-09-03 10:59:21 1.9 GiB historic_climate_gz_2GB_file/20190903_085819_00005_bzbtg_bucket-00005.gz 2019-09-03 10:59:18 1.9 GiB historic_climate_gz_2GB_file/20190903_085819_00005_bzbtg_bucket-00006.gz 2019-09-03 10:59:17 1.9 GiB historic_climate_gz_2GB_file/20190903_085819_00005_bzbtg_bucket-00007.gz Total Objects: 8 Total Size: 15.0 GiB
Converta o formato dos dados e defina o tamanho aproximado do arquivo
Conclua as etapas a seguir:
-
Para converter os dados em um formato diferente, execute o seguinte comando:
CREATE TABLE "historic_climate_parquet" WITH ( external_location = 's3://awsexamplebucket/historic_climate_parquet/', format = 'PARQUET') AS SELECT * FROM historic_climate_gz -
Para confirmar o tamanho do conjunto de dados, execute o seguinte comando ls:
aws s3 ls s3://awsexamplebucket/historic_climate_parquet/ --summarize --recursive --human-readableExemplo de saída:
Total Objects: 30 Total Size: 9.8 GiB -
Determine o número de buckets que você deve usar para atingir o número de arquivos desejados. Por exemplo, para arquivos de 500 MB e um conjunto de dados de 9,8 GB, você precisa ter 20 arquivos.
-
Para converter o conjunto de dados em arquivos de 500 MB, execute o seguinte comando:
CREATE TABLE "historic_climate_parquet_500mb" WITH ( external_location = 's3://awsexamplebucket/historic_climate_parquet_500mb/', format = 'PARQUET', bucket_count=20, bucketed_by = ARRAY['yearmonthday'] ) AS SELECT * FROM historic_climate_parquet -
Para confirmar se o conjunto de dados contém o número desejado de arquivos, execute o seguinte comando ls:
aws s3 ls s3://awsexamplebucket/historic_climate_parquet_500mb/ --summarize --recursive --human-readableExemplo de saída:
2019-09-03 12:01:45 333.9 MiB historic_climate_parquet_500mb/20190903_095742_00001_uipqt_bucket-00000 2019-09-03 12:01:01 666.7 MiB historic_climate_parquet_500mb/20190903_095742_00001_uipqt_bucket-00001 2019-09-03 12:01:00 665.6 MiB historic_climate_parquet_500mb/20190903_095742_00001_uipqt_bucket-00002 2019-09-03 12:01:06 666.0 MiB historic_climate_parquet_500mb/20190903_095742_00001_uipqt_bucket-00003 2019-09-03 12:00:59 667.3 MiB historic_climate_parquet_500mb/20190903_095742_00001_uipqt_bucket-00004 2019-09-03 12:01:27 666.0 MiB historic_climate_parquet_500mb/20190903_095742_00001_uipqt_bucket-00005 2019-09-03 12:01:10 666.5 MiB historic_climate_parquet_500mb/20190903_095742_00001_uipqt_bucket-00006 2019-09-03 12:01:12 668.3 MiB historic_climate_parquet_500mb/20190903_095742_00001_uipqt_bucket-00007 2019-09-03 12:01:03 666.8 MiB historic_climate_parquet_500mb/20190903_095742_00001_uipqt_bucket-00008 2019-09-03 12:01:10 646.4 MiB historic_climate_parquet_500mb/20190903_095742_00001_uipqt_bucket-00009 2019-09-03 12:01:35 639.0 MiB historic_climate_parquet_500mb/20190903_095742_00001_uipqt_bucket-00010 2019-09-03 12:00:52 529.5 MiB historic_climate_parquet_500mb/20190903_095742_00001_uipqt_bucket-00011 2019-09-03 12:01:29 334.2 MiB historic_climate_parquet_500mb/20190903_095742_00001_uipqt_bucket-00012 2019-09-03 12:01:32 333.0 MiB historic_climate_parquet_500mb/20190903_095742_00001_uipqt_bucket-00013 2019-09-03 12:01:34 332.2 MiB historic_climate_parquet_500mb/20190903_095742_00001_uipqt_bucket-00014 2019-09-03 12:01:44 333.3 MiB historic_climate_parquet_500mb/20190903_095742_00001_uipqt_bucket-00015 2019-09-03 12:01:51 333.0 MiB historic_climate_parquet_500mb/20190903_095742_00001_uipqt_bucket-00016 2019-09-03 12:01:39 333.0 MiB historic_climate_parquet_500mb/20190903_095742_00001_uipqt_bucket-00017 2019-09-03 12:01:47 333.0 MiB historic_climate_parquet_500mb/20190903_095742_00001_uipqt_bucket-00018 2019-09-03 12:01:49 332.3 MiB historic_climate_parquet_500mb/20190903_095742_00001_uipqt_bucket-00019 Total Objects: 20 Total Size: 9.9 GiB
Observação: tabelas agrupadas não suportam a instrução INSERT INTO.
Informações relacionadas
- Tópicos
- Analytics
- Tags
- Amazon Athena
- Idioma
- Português

Conteúdo relevante
- feita há um ano