【发布时间】:2018-10-06 00:57:47
【问题描述】:
我正在尝试执行此查询以获取一些数据。我在 s3://my_datalake/my_table/year=2018/month=9/day=7/ 中的 s3 上的文件大小为 1.1 TB,我有 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')
【问题讨论】:
-
您能否发送有关您的数据源的更多信息?它在 S3 还是 db 上?数据示例。你使用什么格式的数据?
-
它在 s3 上。字段 domain、size、device_id、ip 和 endpoint 是字符串。示例:域 = stackoverlow.com。大小=6x6,device_id=a15848sdsd,ip=127.0.0.7,端点=VASTSDSDSDS128。
-
您可以使用“SHOW CREATE TABLE my_datalake.my_table; 发送表定义吗?