1.所谓的的分区,是真的分成一个一个么按照min?如果将min 改变会不会合并成一个分区?
hive的分区其实是一个个的目录,如果你是每隔15分钟生成一个分区,那就是每隔15分钟生成一个目录。分区是指定数据放在那个目录下,分桶是指定数据放在哪个文件下,merge合并
2.列转行最快的生成效率,比如两个字段限定,要side=1,direct=1(1,2)(2,1)(2,2)时的其他字段的和
这个看具体场景,如果是固定的规则,可以case when,不固定的话,考虑lateral
3.有没有办法快速查哪个分区没有,或者说缺少一个分区
没有,可以尝试查询一个分区范围然后:select partition_date,count(1) from table_name where partition_date between 20201101 and 20201130 group by partition_date order by partition_date
这样的话,就可以看到11月丢了哪天的分区
4.在一个范围内或者两个符号之间的东西删除或者添加
如果简单的规则,那就replace('1234','23',''),这样把23替换成空就行了,如果是规则比较复杂,那就用正则表达式
5.关于桶
hive里面,分区是目录/文件夹,分桶是文件,一般都是按天分区,按业务类型分桶,如果我想查某天某业务类型的数据,就直接去某天的目录下找到某业务类型的数据文件就行了,查询就会快一些,你看mysql里的数据是不是结构很固定,就算那一列的某几行没有数据,也是占个null或者空在那里,但是hbase就不一定了,他会变的。如果某一列没有某一行的数据,那么就不存在这个字段
6.除了某字段不要,其余都要select —from
先select * 再drop
7.nosql与sql
事务一致性,nosql主要是针对哪些半结构化数据的存储,一般都是key,value的方式存储的,和sql的固定结构不同,他可以很多个性化结构