我想从日志文件中清除机器人条目。通过博客中的用户代理字段识别爬虫的一种方法。我将原始日志存储在一个文件夹中,并将流行爬虫的令牌存储在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 中的类似查询效果很好。