Как выполнить запрос с Amazon Athena без исчерпанных ресурсов? - PullRequest
0 голосов
/ 05 октября 2018

Я пытаюсь сделать этот запрос, чтобы получить некоторые данные.Размер файлов, которые у меня есть на s3 в s3: // my_datalake / my_table / year = 2018 / month = 9 / day = 7 /, равен 1,1 ТБ, и у меня есть 10014 объектов snappy.parquet.

SELECT  array_join(array_agg(distinct endpoint),',') as endpoints_all, count(endpoint) as count_endpoints 
    FROM my_datalake.my_table  
    WHERE year=2018 and month=09 and day=07 
    and ts between timestamp '2018-09-07 00:00:00' and timestamp '2018-09-07 23:59:59'
    and status = '2'
    GROUP BY domain, size, device_id, ip

Но я получил эту ошибку:

Запрос исчерпанных ресурсов с этим масштабным коэффициентом

(Run time: 6 minutes 41 seconds, Data scanned: 153.87GB)

У меня есть разделы YEAR, MONTH, DAY и HOUR.Как я могу сделать этот запрос?Могу ли я сделать это с помощью Amazon Athena или мне нужно использовать другой инструмент?

Схема моей таблицы:

   CREATE EXTERNAL TABLE `ssp_request_prueba`(
  `version` string, 
  `adunit` string, 
  `adunit_original` string, 
  `brand` string, 
  `country` string, 
  `device_connection_type` string, 
  `device_density` string, 
  `device_height` string, 
  `device_id` string, 
  `device_type` string, 
  `device_width` string, 
  `domain` string, 
  `endpoint` string, 
  `endpoint_version` string, 
  `external_dfp_id` string, 
  `id_req` string, 
  `ip` string, 
  `lang` string, 
  `lat` string, 
  `lon` string, 
  `model` string, 
  `ncc` string, 
  `noc` string, 
  `non` string, 
  `os` string, 
  `osv` string, 
  `scc` string, 
  `sim_operator_code` string, 
  `size` string, 
  `soc` string, 
  `son` string, 
  `source` string, 
  `ts` timestamp, 
  `user_agent` string, 
  `status` string, 
  `delivery_network` string, 
  `delivery_time` string, 
  `delivery_status` string, 
  `delivery_network_key` string, 
  `delivery_price` string, 
  `device_id_original` string, 
  `tracking_limited` string, 
  `from_cache` string, 
  `request_price` string)
PARTITIONED BY ( 
  `year` int, 
  `month` int, 
  `day` int, 
  `hour` int)
ROW FORMAT SERDE 
  'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' 
STORED AS INPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
LOCATION
  's3://my_datalake/my_table'
TBLPROPERTIES (
  'has_encrypted_data'='false', 
  'transient_lastDdlTime'='1538747353')

1 Ответ

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

Проблема, вероятно, связана с функциями array_join и array_agg.Я полагаю, что в этом упомянутом случае был превышен предел памяти узла в сервисе Athena.Возможно, Афина не может управлять таким количеством данных в сочетании с этими функциями.

...