hive —— 3.xx版本hive on tez,ACID,需要注意的地方,很多坑,一定要注意!我用的是3.1.0

直接罗列我碰到的问题和我的处理方式,有更好的方式希望能评论告知,互相成长。

1、取消hive on spark,取消mr,使用hive on tez

(1)hive on spark,hive底层使用hivesql转化成sparksql,调用俩种driver使用spark引擎来查询hive数据。本身没什么问题,但需要注意一定要使用官网推荐的版本依赖,否则会出现不可控问题。例如:用了半年多,突然就卡顿的要死,不是不能查,但慢的要死,还有的可能直接就不能查了。(查看源码入口到调用,起初以为是没有默认yarn模式,后来发现会给client,最后也没找到为啥。。换个官网推荐的版本,就没问题了)

版本依赖官网https://cwiki.apache.org/confluence/display/Hive/Hive+on+Spark%3A+Getting+Started

(2)取消mr,我觉得没什么说的,大部分公司都基本放弃了mr,因为的确慢,就算有各种调优方式,但内部过程怎么都是无法略过的,刷盘的io就注定要比spark内存慢上一些,这也是为什么spark能得到大众喜爱迅速占有市场的原因。

(3)tez,也是apache下的开源项目,也是走的内存那一套,也是dagGraph,至于为什么用它可以看一下tez官网http://tez.apache.org/index.html

针对这个说一下现在碰到的问题:

①select count(1) ,count(DISTINCT xxx) from xxx group by xxx limit 10;

这条语句在tez上执行就会出现问题,能执行,但结果不是你想要的结果。自己测试一下。

解决:去掉limit就正常了,或者直接换其他框架查询。

②创建表的时候,不可以使用``符号了,使用报错,例如:create table `xxx.xxx`(不可以)

解决: create table xxx.xxx(可以) create table `xxx`.`xxx`(可以) 

③ACID事务性,创建表不使用external关键字创建表,默认为内部表,内部表默认具有ACID原子性,也就是不适用hive本身是无法查询的,如图使用spark查询:

暂时没有get到特性带来的便利,可能是更安全一些。

解决:弄外部表就好了,删数据的确麻烦些,但可以直接配置全局变量或者写个脚本来直接删表删数据(友情提示:记得开启hdfs回收站,删错了还有回旋余地)

④创建内部表后,会有一些特别的文件在内部表目录中,可以自己去hdfs上看一下,所以如果你想通过mv到其他位置,在创建外部表加载此表数据的话,不行哦~

⑤好像记得还有个时间戳的sqlapi变了,具体记不起来是哪个了

解决:有替换的

⑥想起来了,hive取消了hiveclient,只能通过beeline使用

解决:配置环境变量,beeline直连不用输入url:10000

 

补充

⑦CDP的Hive3.1创建的表默认是ORC格式,建表的时候也可以指定其他格式

create table xxx

(

    id int

) stored as textfile;

 

 

SEQUENCEFILE

  | TEXTFILE    -- (Default, depending on hive.default.fileformat configuration)

  | RCFILE      -- (Note: Available in Hive 0.6.0 and later)

  | ORC         -- (Note: Available in Hive 0.11.0 and later)

  | PARQUET     -- (Note: Available in Hive 0.13.0 and later)

  | AVRO        -- (Note: Available in Hive 0.14.0 and later)

  | JSONFILE    -- (Note: Available in Hive 4.0.0 and later)

  | INPUTFORMAT input_format_classname OUTPUTFORMAT output_format_classname

⑧load加载数据

现象:当使用JDBC(HiveServer2使用场景)时,执行语句:load data local inpath '' overwrite into table table_name,导入选中的文件必须存在与HiveServer2节点的本地服务器上,若存在别的服务器上,命令报错;

 

还有几个,记不起来了,有问题可以直接提。

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值