数据仓库
Hive是建立在Hadoop HDFS上的数据仓库基础架构
Hive可以用来进行数据提取转化加载(ETL)
Hive定义了见到那的类似SQL查询语言,称为HQL它允许熟悉SQL的用户查询数据
Hive允许熟悉MapReduce开发者的开发自定义的mapper和reducer来处理内建的mapper和reducer无法完成的复杂的分析工作
Hive是SQL解析引擎,他将SQL语句转移成M/R Job然后在Hadoop执行
Hive的表其实就是HDFS的目录/文件
Hive的体系节后
Hive的元数据:Hive将元数据存储在数据库中(metastore),支持mysql,derby等数据库。
Hive中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等
一条HQL语句如何在hive中进行查询的?
解释器、编译器、优化器完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询记录存储在HDFS中,并在随后有MapReduce调用执行
hive>quit
hive --service cli >exit
Ctrl+L 或者!clear清屏
show tables 查看数据仓库中的表
show functions 查看数据仓库中的内置函数
查看表结构:desc 表名
查看HDFS上的文件:dfs -ls目录
执行操作系统的命令:!命令
dfs -lsr /user递归查看hdfs /user下的文件
执行HQL语句
select *** from ***
执行SQL的脚本
source SQL文件
hive -S静默模式,直接输出结果,不产生调试信息
hive -e 'show tables';
hive -S -e 'select * from test1';
Web界面方式:
hive --service hwi
通过浏览器来访问:http://<IP地址>:9999/hwi/
远程服务启动方式:
hive --service hiveserver
Hive的数据类型
内部表创建表和加载数据分开完成
外部表只是一个过程,加载数据和创建表同时完成,并不会移动到数据仓库目录中,只是与外部数据建立一个链接。当删除一个外部表时,仅删除该链接
桶表(Buckeet Table)
桶表是对数据进行哈希取值,然后放到不同的文件中进行存储。
物化视图,可以存数据,Hive不支持,oracle,mysql支持