什么是hive:
个人觉得就是hadoop上的数据库,也就是所谓数据仓库。因为hive中的数据全是存储在分布式系统上的,所以储存量十分大,但是缺点也是很明显的,读取速度慢;
既然是数据库,那就免不了ddl,dml操作,就是都表和表内数据操作。。
而我们在hive中操作和操作普通的数据库几乎没有区别,但是hive的本质是将这些sql转换为mapReduce来解决问题的(从2开始使用spark)
hive1.2.1的安装
环境jdk1.7,hadoop2.8.6,mysql(需要创建hive数据库)
注:hive可以单独运行,每次链接会在本地创建一个db文件存储数据,缺点:数据不统一
1.替换jline.jar
将hadoop2.8.6lib下的jline.jar替换为hive中lib下的的jline.jar(hadoop版本过低)
2.新建conf/hive-site.xml
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value>
<description>password to use against metastore database</description>
</property>
</configuration>
3.添加mysql驱动jar
将mysql-connect.jar拷入hive/lib中
4.修改conf/hive-env.sh
指定hadoop路径
5启动
bin/hiveservers2
连接 bin/hive
hive操作
基本所有的sql操作都支持。。
但是一般存数据不用insert,而用load操作(数据量大)
查询时常用的一些操作
关联表:将查询结果用 union all 连接
分组排序:
使用order by 不仅可以用来排序,还可以令数据按一定层次分开
distribute by + sort by 也可以做到
row_number() over (partition by type order by num) 也可以
网友评论