在 regexp_like 中组合 like 和 not like 以优化 Amazon Athena 中的配置单元查询
Posted
技术标签:
【中文标题】在 regexp_like 中组合 like 和 not like 以优化 Amazon Athena 中的配置单元查询【英文标题】:combine like and not like in regexp_like for optimizing hive query in Amazon Athena 【发布时间】:2018-07-24 14:08:26 【问题描述】:我需要以优化的方式重写配置单元查询。我的查询的 where 子句是
WHERE counters is NOT null
AND info LIKE '%sub-page-type=ext-rlol_%'
AND info LIKE '%page-type=Faceout%'
AND info NOT LIKE '%page-type=FaceoutRAW%'
雅典娜文档说我们可以优化配置单元查询https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/。请参考第 9 点。
谁能帮我写一个更优化的查询。此查询超时(超过 30 分钟)
【问题讨论】:
【参考方案1】:我会选择一个正则表达式并使用正/负lookahead patterns
。从理论上讲,这将是阅读文本数据的 3 倍:
WHERE
counters is NOT null
AND info RLIKE
'(?=.*sub-page-type=ext-rlol_)(?=.*page-type=Faceout)(?!.*page-type=FaceoutRAW)'
编辑: 显然,您的亚马逊文档表明您没有使用 HIVE,而是 presto。然后同样适用于其他语法:
WHERE
counters is NOT null
AND regexp_like (info,
'(?=.*sub-page-type=ext-rlol_)(?=.*page-type=Faceout)(?!.*page-type=FaceoutRAW)')
【讨论】:
以上是关于在 regexp_like 中组合 like 和 not like 以优化 Amazon Athena 中的配置单元查询的主要内容,如果未能解决你的问题,请参考以下文章
在Oracle中使用REGEXP_LIKE和使用LIKE的性能哪个好
当 regexp_like 和 regexp_extract 工作正常时,Impala regexp_like 查询返回 null
Oracle:to_number() 在 WHERE 子句中结合 substr() 和 regexp_like()