《hive编程指南》阅读笔记摘要(一)

第一二章 基础知识、基础操作
hive的缺点
1、hive不支持记录级别的增删改操作,但是用户可以通过查询生成新表或者将查询结果导入到文件中。
2、Hive的查询延时很严重,因为MapReduce job的启动过程消耗很长时间,所以不能用在交互查询系统中。
3、hive不支持事务。

hive最适合做数据仓库
HiveQL不符合ansi sql标准,和mysql、oracle的sql有很多差异。

mapreduce处理输入的文档时,传给mapper的key是文档中这行的起始位置的字符偏移量,value是这行文本。
对程序员透明的事情,也是hadoop神奇的地方是,hadoop会自动执行排序sort和重新洗牌发牌shuffle的过程:对mapper输出的key/value进行排序,然后洗牌发牌:将相同键的key/value对发给同一个reducer。

访问hive的方式有Cli,HWI(web界面),JDBC,ODBC,thrift(hive有thrift服务器)等方式。
所有的查询和操作都会进入到Driver模块
hive不必和mapreduce服务部署在相同的节点上
hive的元数据metadata会保存在关系型数据库中,如Derby、mysql等,metadata包括表模式(表结构)等信息

HBase相对于hive的优点:
他有hive无法提供的数据库特性,如行级别的更新,快速的查询响应时间,支持行级事务(不支持多行事务)等


HBase和Hadoop什么关系:Hbase使用HDFS保存数据。
Hbase没有提供类似SQL的查询语言,但是有Hive on Hbase、phoenix等假设在hbase上的工具帮助实现了SQL功能

hivesql中的关键字是不区分大小写的

一个linux系统上, 不同的用户可以有自己不同的数据仓库,可以使用下面的语句配置仓库的目录(在HDFS系统上),可以把下边这句命令写进用户主目录下.bashrc中就可以了:
set hive.metastore.warehouse.dir=/..................

存储元数据的数据库服务器:元数据的存储量其实非常的小,但是如果元数据服务器是单点的话,也会有单点问题,所以如果资源不紧张,也应该配置成主备模式。
仓库目录属性是hive.metastore.warehouse.dir,属性值最好是/hive/warehouse或/user/hive/warehouse,后者是默认值

hive --help
hive可以启动不同的服务,包括
Service List: beeline cleardanglingscratchdir cli hbaseimport hbaseschematool help hiveburninclient hiveserver2 hplsql hwi jar lineage llapdump llap llapstatus metastore metatool orcfiledump rcfilecat schemaTool version
cli是默认的
hiveserver/hiveserver2是监听其他进程的thrift连接的守护进程
hwi是一个web界面,因为hive通常不会安装到所有节点,使用hwi就不需要登录到那台安装了hive的节点去执行hql了(启动时会去寻找hwi的war包)

hive中几种命名空间
1、hivevar      可读/可写    用户自定义变量
2、hiveconf     可读/可写    hive相关的配置属性
3、system       可读/可写    java定义的配置属性
4、env          只可读       shell环境变量

hive> set;             打印出所有命名空间中的所有变量
hive> set -v;     打印更多,还会打印出hadoop定义的所有属性

执行查询的几种方式
1、-e
$ hive -S -e "select * from mytable limit 3" > /home/will/hive/mydata.txt
-S表示静默执行,不打印到控制台,并且会去掉提示语句,只保留数据
-e 是执行查询语句
2、-f
按惯例,hive查询文件保存为.q或者.hql后缀的文件
$ hive -f /...../abc.hql
或者
hive> source /...../abc.hql          //类似shell中的source也是执行shell脚本文件

hive>         敲击TAB见可以显示所有关键字或函数名
cat  .hivehistory            到用户主目录下查看hive操作历史文件   .hivehistory

在hive cli环境中执行一些简单的shell命令
hive> ! ls /root;

在hive cli环境中执行hadoop dfs命令
hive> dfs -ls /;

hive脚本中以 --  双划线开头的行表示注释

执行查询时,显示表头,即表字段名称

hive> set hive.cli.print.header=true;


--------------------------
微信公众号:IT人成长关注
大数据技术QQ群:485681776

你可能感兴趣的:(大数据)