HIVE关键字清单

这篇博客汇总了Hive的关键字,包括非保留和保留关键字,并指出在Hive 2.0.0之后,REGEXP和RLIKE变为保留关键字。同时,文章提供了在使用这些关键字时的解决方案,如使用引用标识符或设置hive.support.sql11.reserved.keywords=false。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因项目需要识别出Hive的关键字,特从Hive官网中扣下来的。如坚持使用关键字,文章最末有解决方案。

Keywords, Non-reserved Keywords and Reserved Keywords

Keywords

ADD,ADMIN,AFTER,ALL,ALTER,ANALYZE,AND,ARCHIVE,ARRAY,AS,ASC,AUTHORIZATION,BEFORE,BETWEEN,
BIGINT,BINARY,BOOLEAN,BOTH,BUCKET,BUCKETS,BY,CASCADE,CASE,CAST,CHANGE,CHAR,CLUSTER,
CLUSTERED,CLUSTERSTATUS,COLLECTION,COLUMN,COLUMNS,COMMENT,COMPACT,COMPACTIONS,COMPUTE,
CONCATENATE,CONF,CONTINUE,CREATE,CROSS,CUBE,CURRENT,CURRENT_DATE,CURRENT_TIMESTAMP,CURSOR,
DATA,DATABASE,DATABASES,DATE,DATETIME,DAY,DBPROPERTIES,DECIMAL,DEFERRED,DEFINED,DELETE,
DELIMITED,DEPENDENCY,DESC,DESCRIBE,DIRECTORIES,DIRECTORY,DISABLE,DISTINCT,DISTRIBUTE,
DOUBLE,DROP,ELEM_TYPE,ELSE,ENABLE,END,ESCAPED,EXCHANGE,EXCLUSIVE,EXISTS,EXPLAIN,EXPORT,
EXTENDED,EXTERNAL,FALSE,FETCH,FIELDS,FILE,FILEFORMAT,FIRST,FLOAT,FOLLOWING,FOR,FORMAT,
HiveQL关键字Hive查询语言的核心组成部分,它们用于定义、操作和控制数据仓库中的数据结构和数据流。以下是一些常见的HiveQL关键字及其使用说明: ### 创建和管理数据库 - **CREATE DATABASE**:用于创建一个新的数据库。例如: ```sql CREATE DATABASE IF NOT EXISTS mydb; ``` 这条语句会检查是否存在名为`mydb`的数据库,如果不存在则创建它 [^1]。 - **DROP DATABASE**:用于删除一个已存在的数据库。例如: ```sql DROP DATABASE IF EXISTS mydb; ``` 这条语句会检查是否存在名为`mydb`的数据库,如果存在则删除它 [^1]。 - **USE DATABASE**:用于切换当前使用的数据库。例如: ```sql USE mydb; ``` 这条语句会使后续的操作都在`mydb`数据库中进行 [^1]。 ### 创建和管理表 - **CREATE TABLE**:用于创建一个新的表。例如: ```sql CREATE TABLE IF NOT EXISTS employees ( id INT, name STRING, salary FLOAT ); ``` 这条语句会检查是否存在名为`employees`的表,如果不存在则创建它,并定义了三个字段:`id`(整数)、`name`(字符串)和`salary`(浮点数) [^1]。 - **DROP TABLE**:用于删除一个已存在的表。例如: ```sql DROP TABLE IF EXISTS employees; ``` 这条语句会检查是否存在名为`employees`的表,如果存在则删除它 [^1]。 - **ALTER TABLE**:用于修改表的结构。例如: ```sql ALTER TABLE employees ADD COLUMNS (department STRING); ``` 这条语句会在`employees`表中添加一个新的列`department`(字符串类型) [^4]。 ### 查询数据 - **SELECT**:用于从表中检索数据。例如: ```sql SELECT * FROM employees; ``` 这条语句会返回`employees`表中的所有数据 [^4]。 - **WHERE**:用于过滤查询结果。例如: ```sql SELECT * FROM employees WHERE salary > 50000; ``` 这条语句会返回`employees`表中工资大于50000的所有数据 。 - **JOIN**:用于连接两个或多个表。例如: ```sql SELECT e.name, d.department_name FROM employees e JOIN departments d ON e.department_id = d.id; ``` 这条语句会连接`employees`表和`departments`表,返回员工的名字和所属部门的名称 [^5]。 ### 插入和更新数据 - **INSERT INTO**:用于向表中插入数据。例如: ```sql INSERT INTO TABLE employees (id, name, salary) VALUES (1, 'John Doe', 60000); ``` 这条语句会向`employees`表中插入一条记录 。 - **LOAD DATA**:用于从文件系统加载数据到表中。例如: ```sql LOAD DATA INPATH '/user/hive/input/employees.txt' INTO TABLE employees; ``` 这条语句会从HDFS路径`/user/hive/input/employees.txt`加载数据到`employees`表中 [^3]。 ### 分组和聚合 - **GROUP BY**:用于对查询结果进行分组。例如: ```sql SELECT department, COUNT(*) AS num_employees FROM employees GROUP BY department; ``` 这条语句会按部门分组,统计每个部门的员工数量 。 - **ORDER BY**:用于对查询结果进行排序。例如: ```sql SELECT * FROM employees ORDER BY salary DESC; ``` 这条语句会按工资降序排列`employees`表中的所有数据 [^4]。 ### 其他常用关键字 - **PARTITION**:用于对表进行分区。例如: ```sql CREATE TABLE sales ( product_id INT, sale_date STRING, amount FLOAT ) PARTITIONED BY (region STRING); ``` 这条语句会创建一个名为`sales`的表,并按地区进行分区 [^5]。 - **BUCKET**:用于对表进行桶化。例如: ```sql CREATE TABLE users ( user_id INT, username STRING ) CLUSTERED BY (user_id) INTO 4 BUCKETS; ``` 这条语句会创建一个名为`users`的表,并按`user_id`进行桶化,分成4个桶 [^3]。 - **MAPJOIN**:用于优化小表连接大表的性能。例如: ```sql SELECT /*+ MAPJOIN(small_table) */ big_table.id, small_table.value FROM big_table JOIN small_table ON big_table.key = small_table.key; ``` 这条语句会使用`MAPJOIN`提示来优化连接操作,提高查询性能 [^5]。 ### 压缩设置 - **SET**:用于设置Hive配置参数。例如: ```sql SET hive.exec.compress.intermediate=true; SET hive.intermediate.compression.codec=org.apache.hadoop.io.compress.SnappyCodec; ``` 这些语句会启用中间数据压缩,并指定使用Snappy压缩算法 [^5]。 这些关键字和示例只是HiveQL功能的一小部分,实际应用中可以根据具体需求进行更复杂的查询和操作。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值