Hive的基础知识

本文详细介绍Hive中的数据库和表的概念,包括默认存储路径、数据库的创建、修改及删除等操作,帮助读者掌握Hive的基本使用。

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

Hive中的数据库和表 详细讲解文章

Hive操作数据库语句总结

一、Hive中的数据库(Database)和表(Table)

1. Hive在HDFS上的默认存储路径

HDFS是Hadoop分布式文件系统

Hive的数据都是存储在HDFS上的,默认有一个根目录,在hive-site.xml中,由参数hive.metastore.warehouse.dir指定。默认值为/user/hive/warehouse

2. Hive中的数据库(Database)

  • 进入Hive命令行,执行show databases;命令,可以列出hive中的所有数据库,默认有一个default数据库,进入Hive-Cli之后,即到default数据库下。
  • 使用use databasename; 可以切换到某个数据库下,同mysql;
hive> show databases;
OK
default
lxw1234
usergroup_mdmp
userservice_mdmp
Time taken: 0.442 seconds, Fetched: 4 row(s)
hive> use lxw1234;
OK
Time taken: 0.023 seconds
hive>
  • Hive中的数据库在HDFS上的存储路径为:
    ${hive.metastore.warehouse.dir}/dataabasename.db

    比如,名为lxw1234的数据库存储路径为:
    /user/hive/warehouse/lxw1234.db

  • 创建Hive数据库
    使用HDFS超级用户,进入Hive-Cli,语法为:
CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name
[COMMENT database_comment]
[LOCATION hdfs_path]
[WITH DBPROPERTIES (property_name=property_value, ...)];

比如,创建名为zjwei的数据库:

CREATE DATABASE IF NOT EXISTS zjwei
COMMENT 'zjwei的Hive练习'
localtion 'hdfs://namenode/user/lxw1234/lxw1234.db/';

创建时候可以指定数据库在HDFS上的存储位置。

注意:使用HDFS超级用户创建数据库后,该数据库在HDFS上的存储路径的属主为超级用户,如果该数据库是为某个或者某些用户使用的,则需要修改路径属主,或者在Hive中进行授权。

  • 修改数据库

修改数据库属性:

ALTER (DATABASE|SCHEMA) database_name

SET DBPROPERTIES (property_name=property_value, …);

修改数据库属主:

ALTER (DATABASE|SCHEMA) database_name

SET OWNER [USER|ROLE] user_or_role;
  • 删除数据库
DROP (DATABASE|SCHEMA) [IF EXISTS] database_name

[RESTRICT|CASCADE];

默认情况下,Hive不允许删除一个里面有表存在的数据库,如果想删除数据库,要么先将 数据库中的表全部删除,要么可以使用CASCADE关键字,使用该关键字后,Hive会自己将数据库下的表全部删除。RESTRICT关键字就是默认情 况,即如果有表存在,则不允许删除数据库。

Hive 是一个建立在 Hadoop 之上的数据仓库工具,能够将结构化的数据文件映射为一张数据库表,并提供类 SQL 查询功能,适用于大规模数据分析场景。它主要面向分布式存储环境下的离线数据分析需求,支持通过 MapReduce 或 Tez 等执行引擎进行数据处理。 ### Hive 的基本架构组成 Hive 的核心模块包括以下几个部分: - **Driver(驱动模块)**:负责接收查询语句,解析、编译并优化查询逻辑,最终生成可执行的计划任务。 - **Metastore(元数据存储)**:通常是一个独立的关系型数据库(如 MySQL),用于保存表结构、分区信息等元数据[^4]。 - **执行引擎(Execution Engine)**:根据 Driver 生成的任务计划调用相应的执行框架(如 MapReduce、Tez)来运行任务。 - **CLI(命令行接口)**:用户可以通过 CLI 执行 HiveQL 命令进行数据操作和查询[^1]。 - **HWI(Hive Web Interface)**:Hive 自带的图形界面,允许用户通过浏览器提交查询请求。 ### Hive 的安装与配置 在部署 Hive 之前,需要确保已经安装了 Hadoop 和 Java 环境。Hive 需要依赖 HDFS 来存储数据,并通过 Metastore 存储元数据信息。典型配置包括修改 `hive-site.xml` 文件中的以下关键参数: ```xml <configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost:3306/hive_metastore?createDatabaseIfNotExist=true</value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.cj.jdbc.Driver</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>hiveuser</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>hivepassword</value> </property> <property> <name>hive.metastore.warehouse.dir</name> <value>/user/hive/warehouse</value> </property> </configuration> ``` 其中,`hive.metastore.warehouse.dir` 指定了 Hive数据默认的存储路径[^3]。 ### Hive 的基本操作 #### 创建数据库和表 创建数据库可以使用如下语句: ```sql CREATE DATABASE IF NOT EXISTS mydb; USE mydb; ``` 创建一张简单的表: ```sql CREATE TABLE employees ( id INT, name STRING, salary FLOAT, department STRING ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LOCATION '/user/hive/warehouse/mydb.db/employees'; ``` #### 数据导入与导出 从本地文件系统加载数据Hive 表中: ```sql LOAD DATA LOCAL INPATH '/path/to/local/file.csv' INTO TABLE employees; ``` 从 HDFS 导入数据: ```sql LOAD DATA INPATH '/input/data.csv' INTO TABLE employees; ``` 导出数据HDFS: ```sql INSERT OVERWRITE DIRECTORY '/output/results' ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' SELECT * FROM employees; ``` #### 查询与分析 Hive 支持标准的 SQL 查询语法,例如: ```sql SELECT department, AVG(salary) AS avg_salary FROM employees GROUP BY department; ``` 也可以结合窗口函数进行复杂分析: ```sql SELECT id, name, salary, RANK() OVER (ORDER BY salary DESC) as rank FROM employees; ``` ### Hive 与其他系统的集成 Hive 可以通过 JDBC 或 ODBC 接口与外部应用程序集成,例如 Java 应用或 BI 工具(如 Tableau)。此外,Hive 还支持 Thrift 服务,允许远程客户端通过网络访问 Hive 服务。 ### 学习资源推荐 对于初学者而言,《Hive 编程指南》《Hive 简明教程》以及官方文档是很好的参考资料[^1]。同时,Hue、Karmasphere 等图形化工具也提供了更友好的交互方式,适合非技术人员快速上手[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值