如何使用 ETL (AWS Glue) 聚合数据,以便我们可以使用 Athena 通过特定属性仅选择一部分数据

Posted

技术标签:

【中文标题】如何使用 ETL (AWS Glue) 聚合数据,以便我们可以使用 Athena 通过特定属性仅选择一部分数据【英文标题】:How to aggregate data with ETL (AWS Glue) so we can use Athena to select by certain attribute for only a percentage of data 【发布时间】:2021-05-06 20:40:19 【问题描述】:

如果有更好的地方可以问这类问题,请告诉我。

我有一个存储和尝试读取文档的服务。对于每个文档,该服务都会以一定的信心提取和读取行和单词。

单个文档(ETL 之前)的负载如下所示


        "Blocks": [
            
                "Type": "LINE",
                "Confidence": 90
                "Value": "this is a sentence"
                ...
            ,
            
                "Type": "WORD",
                "Confidence": 99
                "Value": "this"
                ...
            ,
            
                "Type": "WORD",
                "Confidence": 97
                "Value": "is"
                ...
            ,
            
                "Type": "WORD",
                "Confidence": 89
                "Value": "a"
                ...
            ,
            
                "Type": "WORD",
                "Confidence": 99
                "Value": "sentence"
                ...
            ,
            
                "Type": "WORD",
                "Confidence": 50
            ,
            
                "Type": "LINE",
                "Confidence": 90
                "Value": "example of another line"
                ...
            ,
            ...
        ]
    

我正在为 ETL 聚合函数寻找高级算法或想法,以便我可以使用 Athena 进行查询,从而得到类似的结果

“给我所有 30% 单词置信度 > 60 的文档”

【问题讨论】:

【参考方案1】:

不需要etl,athena可以原生读取json,见

https://docs.aws.amazon.com/athena/latest/ug/querying-JSON.html

在您创建表之后,您需要为您的任务编写正确的查询。你的陈述“给我所有的文档,其中 x% 的单词有一些信任”是非常标准的。细节取决于你如何定义你的表列,但你可以这样做:

SELECT docid from mytable group by docid
 having count_if(confidende>60)* 1./count(*) > 0.3

【讨论】:

嗨,感谢您的回答,是的,我们也考虑过这种方法,但是我们的 json 可以达到几个 mb。此外,查询可能非常复杂。所以我们想要一个解决方案,我们可以将我们的聚合数据带到顶层以进行更简单的查询。我想我找到了一个可行的解决方案,我可能可以将数据聚合为百分比分布的直方图的地图表示。

以上是关于如何使用 ETL (AWS Glue) 聚合数据,以便我们可以使用 Athena 通过特定属性仅选择一部分数据的主要内容,如果未能解决你的问题,请参考以下文章

从 AWS Redshift 到 S3 的 AWS Glue ETL 作业失败

AWS Glue ETL 到 Redshift:日期

AWS Glue 和重复数据删除增量 CSV 文件

AWS Glue:SQL Server 多个分区数据库 ETL 到 Redshift

何时通过 AWS Glue ETL 使用 Amazon Redshift 频谱来查询 Amazon S3 数据

AWS Glue ETL作业缺少对爬网程序可见的字段