Hive数据库操作(查询的操作语法)

基本查询

        基本查询和其它数据库(MySQL等)类似,本文就不再介绍。这里主要说的是Hive数据中一些特别的查询。

RLIKE正则匹配

        规则表如下,需要用到的时候查看对应规则即可。

         示例:

-- 查询id号中连续出现两次2的学生信息
select * from myhive.scores where s_id RLIKE '.*22.*'

 

-- 查询id号为X34XXX的学生信息
select * from myhive.scores where s_id RLIKE '.34...'

 

-- 查询学生名字有:美、雷、芳的
select * from myhive.scores where s_name RLIKE '[美雷芳]'

 

 UNION查询

        UNION用于将多个SELECT 语的结果组合成单个结果集。每个select 语句返回的列的数量和名称必须相同,否则无法合并,将引发架构错误。

        UNION 是自动将结果连接后去重再输出结果的,如果加上ALL就是直接输出带结果。

        示例(去重)

select * from myhive.scores where s_name='小芳'
union
select * from myhive.scores where s_name='小刚';

 

        示例(不去重)

select * from myhive.scores where s_name='小芳'
union all 
select * from myhive.scores where s_name='小刚';

 

         另外UNION也可以用from后,将UNION执行的结果当作一个表来进行查询

select count(*) from (
    select * from myhive.scores where s_name='小芳'
union all
    select * from myhive.scores where s_name='小刚'
) as u;

 

数据抽样

        基于随机分桶抽样

        示例(基于列随机)

-- 基于temperature取模分出8个桶,在这8个桶中随机抽取3个数据出来
select * from weather3 tablesample (bucket 3 out of 8 on temperature);

        因为是基于列进行哈希运算的分组,每个数据计算出来的值是固定不变的,所以该条SQL无论执行多次结果都是一样的 。因为结构与分桶表相似,所以在对分桶表随机抽样的时候基于列的抽样是有优势的

 

        示例(基于行随机)

select * from weather3 tablesample (bucket 3 out of 10 on rand());

        每次运行的结果都不同,这种方式对于非分桶表有优势。

        基于数据块抽样

        该方法是按照顺序进行抽样,并不是随机抽样 ,所以无论运行多少次结果都是一样的

        示例

-- 取四条记录
select * from weather3 tablesample (4 rows);

         其它的还有下面几个SQL语句,就不展示结果了。

-- 取20%的数据
select * from weather3 tablesample (20 percent);

-- 取1kb的数据
select * from weather3 tablesample (1k);

虚拟列

         例如

select new_wet,BLOCK__OFFSET__INSIDE__FILE from weather3;

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值