Hive限制

1.更新,事务,索引,不支持,是全表扫描

2.创建表的字段类型和java类型是对应的。不支持日期类型,提供转换为字符串类型的函数。

3.查询语句中,不支持having,可写嵌套的select来解决;group by后只能是表的定义列名,不能像mysql那样可以为查询语句为逻辑处理结果声明的别名,但可为逻辑处理过程语句

4.内置函数查看命令(show functions;desc function 函数名)

5.hive中分托管表和外部表,不同的主要是在drop时,托管表,从hive中删除元数据和表数据;外部表,只能删除元数据;

6.hive中加载表数据时,不审查加载的数据是否符合表的声明模式,只在查询的时候,用返回null来标识是否符合表的声明模式

7.hive中通过对表进行分区(包含分桶)来提搞对某个特定日期或者某些日期段的数据查询性能。表分区实际为表目录下的目录文件。插入时需指定表分区(静态分区或者动态分区都可以),因为插入仅仅只是数据文件的移动,不会做特殊处理。

8.hive中插入不支持 insert into 表名 values的形式存在.可以 load data local input '本地文件路径' into table 表名 [partition(分区字段)]或者 insert [overwrite] table 表名 [partition(分区字段)] select ...from 表名

9.hive中不支持truncate table 表名的形式存在(也包括 delete from 表名),可通过 hive>dfs -rmr /user/hive/warehouse/表名来清空该表下的数据,以便保持表元数据信息不丢失;或者通过create table 表名 like 表名,也可以。

10.hive中join关联查询,只能通过from 表1 join 表2 on (等值的关联条件) ,不支持像mysql或者oracle中,可以from 表1,表2 where 表1.列 = 表2.列的形式

11.hive中不支持 in (子查询语句),比如: in (select id from 表名) .可以通过内连接或者 半连接 from 表1 left semi join 表2 on (表1.列名 = 表2.列名),表2只能在on中出现,不能在select中引用

12.可以通过explain查看hive sql执行计划及解分成后的mapreduce作业数等信息

13.hive中子查询语句只能出现在from子句中,其他地方目前不允许

14.hive中在不需要全局排序的情况下,写排序语句时,最好用distribute by 表名.字段名 sort by表名.字段名 asc | desc 的形式,尽量不用order by形式(只通过一个reduce来完成所有的排序结果
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值