Impala函数使用小记
Posted 长亭古道读人生
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Impala函数使用小记相关的知识,希望对你有一定的参考价值。
公司接入神策系统,数据查询的速度是提升了N个档次了,但问题是有些模型不支持查询我想要的东西,这个时候呢,需要用到自定义查询了。其实数据库里面的好多函数,在这里都行不通了,我也是每次查询都整的头大。
先百度了一下Impala是个啥东东:
Impala是Cloudera公司主导开发的新型查询系统,它提供SQL语义,能查询存储在Hadoop的HDFS和HBase中的PB级大数据。已有的Hive系统虽然也提供了SQL语义,但由于Hive底层执行使用的是MapReduce引擎,仍然是一个批处理过程,难以满足查询的交互性。相比之下,Impala的最大特点也是最大卖点就是它的快速。
其实今天要查询的一个东东,在数据库里面是很简单实现的,大致是,在A表但是不在B表的记录要查出来,原本以为这个数据库速度这么快,直接用not in 秒出结果的事情,结果,这里面是没有not in 这种用法的,后面查示例才知道要用A left join B再挑出B中间某个字段为空的记录。
我建了五个分群,历经无数次报错,终于可以执行出结果了:
select count(distinct a.merchant_no),count(*),sum(a.pay_enter_money) from events a,
(select s.distinct_id from segmenter_chaojishengPOS s left join
(select distinct_id from segmenter_getiyonghu
union select distinct_id from segmenter_geti_2
union select distinct_id from segmenter_qiyeyonghu
union select distinct_id from segmenter_qiye_2) g on s.distinct_id=g.distinct_id
where g.distinct_id is null) b,
users c
where b.distinct_id=c._user_id and a.merchant_no=c.merchant_no
and a.event='PayResult' and a.service_type='10011' and trans_status='SUCCESS'
and acq_name='ZG_ZQ';
在改的过程中,我经历过大致这几类错误:
duplicated inline view column alias: 'user_id' in inline view 'b'
:我创建的子查询,也叫做内嵌视图,用了无数次,今天才知道这个叫法,这个中间user_id这个字段是重复的。
AnalysisException: Column/field reference is ambiguous: 'distinct_id':查询的结果有多个distinct_id没有指定是哪一个distinct_id。我的解决办法是只取A表中的distinct_id出来。
AnalysisException: duplicated inline view column alias: 'distinct_id' in inline view 'b':报错和第一种类似,因为有多个distinct_id,所以不知道取哪一个。
其实,这个方法,肯定是有待优化的,但我暂且记录一下,在经历过数次百度后发现,其实问题的解决,还是靠不断的试错,不断定位问题,才最终解决问题。
现在比较一下impala和mysql中可以通用的:
可以将表别名;
聚合函数是可用的,例如,max,min,sum,count,count(distinct)这些;
可联表查询;
group by 1,2,3是适用的;
正则表达式也是可以匹配的【但我用的比较少,这个是后期要继续研究的】。
Impala里面觉得特别好用的函数:
first_time_value,这个函数超厉害,可以查出首次行为对应的值,这个真的是超赞,如果用mysql的话,要经过太多道处理了;
extract(unit FROM timestamp),大概类似date_format吧,如果查年月日,不知道要怎么处理,这个还得继续研究。
感悟:
在想办法解决问题的途中,很少有一气呵成的时候,有时候你的一气呵成,是前期的很多坑都已经踩过填平了。升级打怪继续咯!
近期:
在看人类简史,之前上学的时候,觉得历史太无聊了,里面的故事一点都不好玩,现在回头看,人类短短6000年的文明史,已经有太多的聪明大脑解决了人类生活的问题,我们并没有觉得生活更美好,是因为解决一个问题之后,需求变了,生活也是如此。
前期在看的当我遇见一个人,蛮好看的,主要是因为图画精美,文字简短。而之前在看的理性乐观派,好像很久都没看到那本书了。
这几天又忍不住去把顾漫的你是我的荣耀看了一遍,觉得整本书很甜,故事情节也不老套。
顾漫的小说,微微一笑很倾城,我当时也是看了好多遍。这种网游类的小说,好像我还是挺喜欢看的,虽然我不玩游戏。
近期在追囧囧有妖的《余生有你,甜又暖》,只是更新太慢了。
刚在群里看到一句话:只要思想不滑坡 方法总比困难多啊!哈哈,共勉。
以上是关于Impala函数使用小记的主要内容,如果未能解决你的问题,请参考以下文章