什么是Hive?
hive由Facebook实现并开源,hive是依赖于hadoop的一个数据库(数据仓库),可以让开发者在不清楚MapReduce编程的情况下完成MapReduce的任务执行,把MapReduce程序封装成了HQL语句,使用户像操作sql一样去操作MapReduce程序。
1、可扩展性,横向扩展,Hive 可以自由的扩展集群的规模,一般情况下不需要重启服务 横向扩展:通过分担压力的方式扩展集群的规模 纵向扩展:一台服务器cpu i7-6700k 4核心8线程,8核心16线程,内存64G => 128G
2、延展性,Hive 支持自定义函数,用户可以根据自己的需求来实现自己的函数
3、良好的容错性,可以保障即使有节点出现问题,SQL 语句仍可完成执行
1、Hive 不支持记录级别的增删改操作,但是用户可以通过查询生成新表或者将查询结 果导入到文件中(当前选择的 hive-2.3.2 的版本支持记录级别的插入操作)
2、Hive 的查询延时很严重,因为 MapReduce Job 的启动过程消耗很长时间,所以不能 用在交互查询系统中。
3、Hive 不支持事务(因为没有增删改,所以主要用来做 OLAP(联机分析处理),而 不是 OLTP(联机事务处理),这就是数据处理的两大级别)。
在hive的目录下新建一个hive-site.xml文件 加入如下内容
schematool -dbType mysql -initSchema
row format delimited 代表一个回车为一行数据
fields terminated by ","; 代表字段按照对应的分隔符进行分割
- 创建文件 touch wangsen.texe
- 给文件添加数据 根据设计的表结构添加 根据上文得出 “,”分隔符
例如:id name age
1,www,22
2,eeee, 33
- 把文件上传到数据库中 Hadoop fs -put wangsen.text (文件名)/hive/dbs/hadoop001.db/wangsen(表名)
- 删除原文件 rm wangsen.text
- 执行sql语句