说明:重新排版的个人版Hive语法(一文在手,hql无忧) Hive语法详解: 内容分9个章节 包括安装及配置; DDL,DML,DQL语法; Hive内置函数及自定义函数; Hive窗口函数及行列转换; Hive注意事项及常见优化; ... ### Hive语法详解 #### 一、安装和配置 **1.1 要求** - **硬件需求**:为了高效地运行Hive,推荐至少具备4GB内存,并且Hive服务器应该有足够的磁盘空间来存储元数据。 - **软件需求**:Hive需要Java环境支持,建议使用JDK 1.8或更高版本;此外,还需要Hadoop平台的支持。 **1.2 从稳定版本安装Hive** - **下载稳定版本**:访问Apache官网下载最新的稳定版本。 - **解压**:将下载的压缩包解压至指定位置。 - **配置环境变量**:设置`HIVE_HOME`指向Hive安装目录,并将`$HIVE_HOME/bin`添加到`PATH`中。 **1.3 从Source构建Hive** - **在master上编译Hive**: - 需要Maven等构建工具。 - 使用Maven命令构建:`mvn clean package -Phadoop-2.7 -Dmaven.test.skip=true` - **在branch-1上编译Hive**: - 同上,但需要指定分支:`mvn clean package -Pbranch-1 -Dmaven.test.skip=true` - **在Hadoop0.20上编译Hive之前的0.13**: - 配置适合Hadoop0.20的Maven配置文件。 - 构建命令:`mvn clean package -Phadoop-0.20 -Dmaven.test.skip=true` - **在Hadoop0.23上编译Hive之前的0.13**: - 类似于Hadoop0.20的配置,但需要使用适合Hadoop0.23的配置文件。 - 构建命令:`mvn clean package -Phadoop-0.23 -Dmaven.test.skip=true` **1.4 运行Hive** - **运行HiveCLI**:使用`hive`命令启动CLI界面。 - **运行HiveServer2和Beeline**:通过`hiveserver2`启动服务端,并使用`beeline`客户端连接。 - **运行HCatalog**:HCatalog作为Hive的一个扩展,提供了一个更面向服务的接口。 - **运行WebHCat(Templeton)**:允许用户通过HTTP REST API进行交互式Hive查询。 **1.5 配置管理概述** - **Hive配置文件**:主要包括`hive-site.xml`等文件。 - **配置项**:例如`hive.metastore.uris`等关键配置。 **1.6 运行时配置** - **通过命令行参数**:例如`-hiveconf hive.exec.dynamic.partition.mode=nonstrict`。 - **通过HiveCLI**:使用`SET`命令设置。 **1.7 Hive,Map-Reduce和Local-Mode** - **Hive默认使用Map-Reduce作为计算引擎**。 - **Local-Mode**:对于小规模数据处理可以使用本地模式。 **1.8 HiveLogging** - **日志配置**:可以通过`log4j.properties`配置文件定制日志级别和格式。 - **HiveServer2日志**:记录HiveServer2的运行状态。 - **审核日志**:用于跟踪用户的活动。 - **PerfLogger**:用于性能监控。 #### 二、DDL操作(数据定义语言) **2.1 建表操作** - **建表的三种方式**: - 直接创建新表。 - 通过LIKE语句创建新表,复制现有表的结构。 - 通过AS语句创建并填充数据。 - **创建内部表**:内部表的数据由Hive直接管理,删除表时会同时删除数据。 - **创建外部表**:外部表的数据独立于表存在,即使删除表,数据也不会被删除。 - **创建分区表**:用于存储按不同键值划分的数据。 - **创建分桶表(Bucket)**:进一步对数据进行细分,提高查询效率。 - **创建临时表**:仅在当前会话中可见。 **2.2 修改表结构** - **表操作**:包括重命名表名、添加或删除表等。 - **列操作**:增加、修改或删除列。 - **分区操作**:增加或删除分区。 **2.3 视图操作** - **创建视图(用于视图查询)**:通过SELECT语句创建视图。 - **删除视图**:使用DROP VIEW命令。 - **更改视图属性**:使用ALTER VIEW命令。 **2.4 索引操作** - **创建索引**:加速某些特定类型的查询。 - **删除索引**:使用DROP INDEX命令。 **2.5 元数据存储** - **Hive Metastore**:存储表结构、分区和其他元数据信息。 - **元数据的管理**:包括初始化、备份和恢复等操作。 #### 三、DML操作(数据操纵语言) **3.1 向数据表内加载文件** - **LOAD DATA INPATH**:将文件系统中的文件加载到表中。 - **INSERT INTO TABLE**:将数据插入表中。 **3.2 将查询结果插入Hive表** - **基本模式**:简单的插入。 - **多插入模式**:一次查询结果可以插入到多个表中。 - **自动分区模式**:根据查询结果自动选择合适的分区进行插入。 - **动态分区插入**:根据查询结果动态创建分区并插入数据。 **3.3 将查询结果写入文件系统** - **保存到本地**:使用`INSERT OVERWRITE LOCAL DIRECTORY`命令。 - **保存到HDFS**:使用`INSERT OVERWRITE DIRECTORY`命令。 - **使用HDFS直接导出表**:直接将表导出为HDFS文件。 **3.4 从SQL插入值到表中** - **INSERT VALUES**:直接插入单行或多行数据。 **3.5 更新** - **UPDATE**:更新表中的数据。 - **DELETE**:删除表中的数据。 #### 四、DQL操作(数据查询语言) **4.1 基本的Select操作** - **SELECT * FROM table_name**:查询所有字段。 - **SELECT column1, column2 FROM table_name**:指定字段查询。 **4.2 基于Partition的查询** - **查询特定分区**:`SELECT * FROM table_name WHERE partition_column = 'partition_value'`。 **4.3 Join操作** - **INNER JOIN**:返回两个表中匹配的行。 - **LEFT OUTER JOIN**:返回左表所有行和右表匹配的行。 - **RIGHT OUTER JOIN**:返回右表所有行和左表匹配的行。 - **FULL OUTER JOIN**:返回两个表所有行。 **4.4 groupby** - **分组统计**:`SELECT column1, COUNT(*) FROM table_name GROUP BY column1`。 **4.5 unionall** - **合并查询结果**:`SELECT column1 FROM table1 UNION ALL SELECT column1 FROM table2`。 **4.6 withas的使用** - **子查询重用**:`WITH temp_table AS (SELECT * FROM table_name) SELECT * FROM temp_table`。 #### 五、DCL操作(数据控制语言) **5.1 提交数据的三种类型** - **事务性操作**:支持ACID性质。 - **非事务性操作**:不支持回滚和隔离性。 **5.2 Hive权限管理** - **三种授权模型**:基于文件系统、基于Hive元数据存储和基于LDAP/AD。 - **角色的添加、删除、查看、设置**:通过GRANT和REVOKE命令管理角色权限。 - **基于CDH5.x的Hive权限配置**:通过特定的配置文件实现权限控制。 **分配权限**:使用GRANT命令授予各种权限。 - **查看权限分配**:使用SHOW GRANTS命令查看权限分配情况。 - **删除权限**:使用REVOKE命令撤销权限。 #### 六、Hive执行流程 - **HiveonMapreduce执行流程**:从SQL解析到最终的MapReduce任务提交。 - **查询处理器**:负责将SQL语句转化为执行计划。 #### 七、Hive数据类型 - **基本数据类型**:如INT、STRING等。 - **复合类型**:如ARRAY、MAP等。 - **类型转换**:使用CAST函数进行类型转换。 #### 二、Hive常用函数总结 - **字符串操作函数**:如CONCAT、SUBSTR等。 - **正则匹配函数**:如REGEXP_EXTRACT等。 - **解析函数**:用于从复杂数据类型中提取数据。 - **聚合函数**:如COUNT、SUM等。 - **开窗函数**:如LAG、LEAD等。 #### 三、Hive内置函数汇总 - **数学函数**:如ABS、RAND等。 - **集合函数**:如UNION、INTERSECT等。 - **类型转换函数**:如CAST、TO_DATE等。 - **日期函数**:如ADD_MONTHS、YEAR等。 #### 四、Hive自定义函数(UDF, UDAF, UDTF) - **UDF:User-Defined Function**:用户自定义函数,用于扩展Hive的功能。 - **UDAF:User-Defined Aggregation Function**:用户自定义聚合函数,用于实现特定的聚合逻辑。 - **UDTF:User-Defined Table-Generating Functions**:用户自定义表生成函数,用于生成新的表格数据。 #### 五、采样与锁机制(Hive高级) - **Random sampling**:随机采样。 - **Bucket tablesampling**:基于分桶表的采样。 - **Block sampling**:基于块的采样。 - **Hive锁**:管理并发操作的安全性。 通过以上内容,我们对Hive的基本安装配置、数据定义语言、数据操纵语言、数据查询语言以及一些高级功能有了全面的理解。这有助于开发者更好地利用Hive进行数据处理和分析。
















剩余63页未读,继续阅读


- 粉丝: 514
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 单片机程设计时钟跑表.docx
- 综合布线施工工序.docx
- T+软件功能介绍PPT学习课件.ppt
- (推荐)易制毒化学品经营单位安全管理机构网络图.doc
- 人工智能-Word-文档.doc
- 基于单片机的多功能智能小车制造设计.doc
- AutoCAD课后习题答案及复习重点.doc
- java专业课程设计图书馆标准管理系统.doc
- MATLAB太阳黑子活动周期.ppt
- 基于excel的线性规划PPT学习课件.ppt
- c语言笔试题(答案).doc
- HXD3微机网络系统介绍文档幻灯片.ppt
- HART通信协议V1.7(C9-C33-C132).doc
- 综合布线总结与心得-.doc
- Excel录入技巧PPT学习课件.ppt
- 软件开发文档规范PPT学习课件.ppt


