Выбор одного столбца не уменьшает объем данных, отсканированных в AWS Athena - PullRequest
0 голосов
/ 15 октября 2018

Я экспериментирую с запросами Athena о данных, хранящихся в паркете в s3.Я добавил раздел в столбец daystamp, и, как и ожидалось, когда я создаю запрос, который использует его, он уменьшает количество проверенных данных.

Однако, когда я ограничиваю возвращение столбцов в операторе SELECT, я ожидаю, что он снова уменьшит объем отсканированных данных, но это не так, он только ускоряет запрос.

Неправильно ли я считаю, что это уменьшает количество сканируемых данных?

Примеры ниже: (время выполнения уменьшается с 11 с до 5 с, но сканированные данные остаются 2,08 МБ)

ВЫБРАТЬ *

enter image description here


ВЫБРАТЬ «столбец»

enter image description here


ВЫБРАТЬ "column.field"

enter image description here

Редактировать:

Добавлено SHOW CREATE TABLE logdata

CREATE EXTERNAL TABLE `logdata`(
  `cells` struct<voltages:array<double>,temperatures:array<int>,capacities:array<double>,soc:array<double>,duty:array<int>,resistance:array<double>> COMMENT 'from deserializer', 
  `pack` struct<outputvoltage:string,packvoltage:string,current:string> COMMENT 'from deserializer', 
  `timestamp` string COMMENT 'from deserializer')
PARTITIONED BY ( 
  `daystamp` string, 
  `deviceid` string)
ROW FORMAT SERDE 
  'org.openx.data.jsonserde.JsonSerDe' 
WITH SERDEPROPERTIES ( 
  'paths'='cells,daystamp,deviceId,pack,timestamp') 
STORED AS INPUTFORMAT 
  'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
  's3://bucketname/v1/logdata/'
TBLPROPERTIES (
  'CrawlerSchemaDeserializerVersion'='1.0', 
  'CrawlerSchemaSerializerVersion'='1.0', 
  'UPDATED_BY_CRAWLER'='ndjsonToParquet', 
  'averageRecordSize'='378', 
  'classification'='json', 
  'compressionType'='none', 
  'objectCount'='162', 
  'recordCount'='232193', 
  'sizeKey'='88003003', 
  'typeOfData'='file')

1 Ответ

0 голосов
/ 16 октября 2018

Да, действительно.Вы не используете формат паркета в вашей таблице.Правая таблица должна использовать SerDe следующим образом:

org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe

Сначала вам нужно преобразовать эти данные, вы также можете преобразовать типы структур и массивов.Это можно сделать с помощью команды AWS GLUE или CTAS в Афине.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...