Hive架构
Hive 组件 用户接口:包括 CLI、JDBC/ODBC、WebGUI。其中,CLI(command line interface)为shell命令行; Hive中的Thrift服务器允许外部客户端通过网络与Hive进行交互,类似于JDBC或ODBC协议。WebGUI是 通过浏览器访问Hive。 元数据存储:通常是存储在关系数据库如 mysql/derby中。Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。 Driver驱动程序,包括语法解析器、计划编译器、优化器、执行器 : 完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在 HDFS 中,并在随后有执行引擎调用执行。 执行引擎:Hive本身并不直接处理数据文件。而是通过执行引擎处理。当下Hive支持MapReduce、 Tez、Spark3种执行引擎。 Hive基本使用 链接方式: 1.使用hive本地连接 2.开启hiveserver2远程服务,使用beeline连接 3.使用hive参数执行任务 hive -e ‘执行语句’ hive -f ‘执行脚本文件’
数据存储格式
Hive中提供了多种文件存储格式:TextFile、SequenceFile、RCFile、ORC、Parquet等。不同的文件存
储格式具有不同的存储特点,有的可以降低存储空间,有的可以提高查询性能等,可以用来实现不同场景下的数据存储,以提高对于数据文件的读写效率。
TextFile:
TextFIle是Hive中默认的文件格式,存储形式为按行存储。
代码语言:javascript复制insert into table t_all_hero_part_dynamic partition(role) select
tmp.*,tmp.role_main from t_all_hero tmp;
–分桶表建表语句
代码语言:javascript复制CREATE [EXTERNAL] TABLE [db_name.]table_name
[(col_name data_type, ...)]
CLUSTERED BY (col_name)
INTO N BUCKETS;
set hive.enforce.bucketing=true;
SequenceFile:
SequenceFile是Hadoop里用来存储序列化的键值对即二进制的一种文件格式。
Parquet:
Parquet是一种支持嵌套结构的列式存储文件格式。
ORC:
ORC文件格式也是一种Hadoop生态圈中的列式存储格式。
Hive中压缩配置
Hive中的压缩就是使用了Hadoop中的压缩实现的,所以Hadoop中支持的压缩在Hive中都可以直接使用。