【问题标题】:Data count in Athena is not rightAthena 中的数据计数不正确
【发布时间】:2020-06-24 02:17:31
【问题描述】:

我有一张the attached image 中描述的表格。 它的数据来自 Firehose(最大缓冲区:128 MB 或 900 秒)

  • 当我尝试简单计数时,它返回一个尴尬的数字,296! 虽然扫描数据的大小很大,12GB,而此数据集中的每条记录为 5KB

  • 当我尝试在 Glue Job 中加载和处理该数据集时,它会返回预期的计数:1778072

我想知道原因是否是 request_query 类型为 array<string> 的字段

由于作业用于实际工作流程,有时我只想查询基本数据,例如iphttp_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


【解决方案1】:

要从 Athena 获得正确的计数,您需要使用换行符拆分输入(firehose 默认不支持) 尝试在 JSON 之间添加新行并检查计数

【讨论】:

    猜你喜欢
    • 2020-10-08
    • 2019-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-25
    • 1970-01-01
    • 2020-02-02
    • 2021-10-21
    相关资源
    最近更新 更多