1

我想从日志文件中清除机器人条目。通过博客中的用户代理字段识别爬虫的一种方法。我将原始日志存储在一个文件夹中,并将流行爬虫的令牌存储在crawler表中。为了清理那些用户代理与令牌匹配的日志,我做了这个查询

CREATE TABLE temp 
AS
SELECT host,time,method,url,protocol,status,size,referer,agent 
FROM raw_logs
WHERE 
agent NOT RLIKE (SELECT concat_ws("|",collect_set(concat("(.*",token,".*)"))) FROM crawler) ; 

它给了我 parseExceptioncannot recognize input near 'SELECT' 'concat_ws' '(' in expression specification

如果我手动替换子查询的结果,那么它就完美了。

CREATE TABLE temp 
AS
SELECT host,time,method,url,protocol,status,size,referer,agent 
FROM raw_logs
WHERE agent NOT RLIKE '(.*Googlebot.*)|(.*bingbot.*)'  ;

LIKE那么hive 1.0.1 不支持子句中的子查询?mysql 中的类似查询效果很好。

4

0 回答 0