【发布时间】:2020-06-24 02:17:31
【问题描述】:
我有一张the attached image 中描述的表格。 它的数据来自 Firehose(最大缓冲区:128 MB 或 900 秒)
当我尝试简单计数时,它返回一个尴尬的数字,296! 虽然扫描数据的大小很大,12GB,而此数据集中的每条记录为 5KB
当我尝试在 Glue Job 中加载和处理该数据集时,它会返回预期的计数:1778072
我想知道原因是否是 request_query 类型为 array<string> 的字段
由于作业用于实际工作流程,有时我只想查询基本数据,例如ip、http_user_agent、...
而且这个模式对于那些任务来说已经足够了,不需要编写另一个作业脚本并等待其成功
希望有办法解决
* 编辑
我正在从 Athena 控制台运行。这里有几个示例查询:
SELECT count(case when request_api = 'collections' then 1 end)
FROM "request_events"
where event_day = '2020-03-01'
and tenant_id = 'devsite.com'
SELECT request_api, count(*)
FROM "request_events"
where event_day = '2020-03-01'
and tenant_id = 'devsite.com'
group by request_api
- 编辑 2
sample data 的附件我测试了 12 条记录,结果是 1 条记录
【问题讨论】:
-
您可以编辑您的问题以显示您正在运行的返回低数字的查询吗?另外,您是在 Athena 控制台还是在 SQL 客户端中运行查询?
-
@JohnRotenstein 仍在 Athena 控制台上运行
-
@JiotaroTonthat,我会尝试在 athena 读取的 s3 路径中手动插入一个较小的数据集(10-20 行),并确保在运行 select * 时返回预期的行集。如果不是,则插入的数据很可能与表格格式不匹配。与插入到 s3 路径中的数据相比,表期望的输入和输出格式是什么?
-
@AnthBieb 我确实尝试了一个较小的集合,100 条 JSON 记录,但在 Athena 上没有任何记录可以查询,尽管它的架构仍然可以使用 Glue Crawler 进行识别
-
fyi,输入格式 org.apache.hadoop.mapred.TextInputFormat 输出格式 org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat Serde 序列化库 org.openx.data.jsonserde.JsonSerDe跨度>
标签: hive aws-glue amazon-athena amazon-kinesis-firehose aws-glue-data-catalog