Hive应用(10.1)锁

Hive可以通过Zookeeper来实现锁定功能。安装好zookeeper后对Hive进行如下配置:

1
2
3
4
5
6
7
8
<property>
<name>hive.zookeeper.quorum</name>
<value>zk1:2181,zk2:2181,zk3:2181</value>
</property>
<property>
<name>hive.support.concurrency</name>
<value>true</value>
</property>

配置完成后Hive会在特定类型的操作时进行加锁,此时可以通过show locks命令来显示当前的锁。

1.1 共享锁和互斥锁

共享锁(s)支持并发执行,互斥锁(x)则不能进行并发操作。各个操作加锁的情况如下:

命令 加锁情况
select .. T1 partition P1 S on T1, T1.P1
insert into T2(partition P2) select .. T1 partition P1 S on T2, T1, T1.P1 and X on T2.P2
insert into T2(partition P.Q) select .. T1 partition P1 S on T2, T2.P, T1, T1.P1 and X on T2.P.Q
alter table T1 rename T2 X on T1
alter table T1 add cols X on T1
alter table T1 replace cols X on T1
alter table T1 change cols X on T1
alter table T1 add partition P1 S on T1, X on T1.P1
alter table T1 drop partition P1 S on T1, X on T1.P1
alter table T1 set serdeproperties S on T1
alter table T1 set serializer S on T1
alter table T1 set file format S on T1
alter table T1 set file format X on T1
alter table T1 set tblproperties X on T1

Read More

Hive应用(8.1)自定义文件和记录格式

1. 文件格式

1.1 文本文件

文本文件是默认的文件格式,通常情况一行为一条记录。文本文件支持直接查看,且灵活性更高。

1.2 SequenceFile

SequenceFile是Hadoop支持的标准文件格式,该格式支持块级别和记录级别的压缩,支持块级别的文件分割。

1.3 RCfile

RCfile使用列式存储,特定情况下列式存储的效率更高,且压缩更为高效。例如:一张宽表有几千个字段,而查询时只需要几个字段,这个时候扫描需要过滤大部分的数据,很浪费时间,而使用列式存储只需要扫描指定的列即可。

2. 记录格式

Hive内置了一下SerDe,同时第三方也有一些SerDe可以使用。

一些常见的SerDe:

Read More

IDEA效率提升

1.插件

1.GsonFormat

根据json自动生成对象

GsonFormat

2.AceJump

使用键盘取代鼠标

3.Key promoter

当你点击鼠标一个功能的时候,可以提示你这个功能快捷键是什么 ,多次使用且没有快捷键的功能会提示创建快捷键

4.Stackoverflow

程序在console抛出异常时,直接右键就可以自动查找Stackoverflow

Read More

MIUI9去广告.md

MIUI的广告大部分可以通过系统应用的设置去关掉,但是很多应用的首屏广告一直没法关闭,甚至还丧心病狂的达到了5秒 :angry: !!!今天偶然看到一个可以去这类广告的方法:用文件管理器删掉SD卡目录下的miad文件夹,然后随便拷贝一个文件命名为miad就可以了。大部分常见应用都加入了小米广告联盟,所以这种方法很有效!

Read More

Hive应用(4.1)调优

1.limit优化

limit语句默认情况下是在查询所有结果后再返回部分结果,这样会造成资源浪费,可以通过参数控制这一行为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!-- 使用抽样数据代替完整扫描所有数据 -->
<property>
<name>hive.limit.optimize.enable</name>
<value>true</value>
</property>

<!-- 抽样最大数量 -->
<property>
<name>hive.limit.row.max.size</name>
<value>100000</value>
</property>

<!-- 抽样最大文件数量 -->
<property>
<name>hive.limit.optimize.limit.file</name>
<value>10</value>
</property>

limit优化也会导致部分数据可能永远无法被处理

2.JOIN优化

将大表放到JOIN的右边

3.本地模式

数据量较小时,任务执行时间甚至会小于任务触发的时间,使用本地模式进行单机处理可以有效提升效率

Read More