You need to enable JavaScript to run this app.
导航

Hive 基础操作

最近更新时间2023.11.27 14:22:06

首次发布时间2022.09.22 16:55:45

本文介绍如何通过 Hive 在 E-MapReduce(EMR) 集群上创建库和表等操作。

1 前提条件

已创建集群,详情请参见 创建集群

2 进入 Hive 命令行

  1. 登录 EMR 集群节点:

    1. 方案一:使用 SSH 方式登录到集群主节点,详情请参见使用 SSH连接主节点

    2. 方案二:或者可以通过 EMR 集群 Hive 服务 中的ECS ID,跳转进入到云服务器的实例界面,点击右上角的 远程连接 按钮,输入集群创建时的 root 密码,进入远程终端。

  2. 执行以下命令,切换为 hive 用户。

su  hive
  1. 执行以下命令,进入 Hive 命令行。
hive

返回信息如下所示时,表示进入 Hive 命令行

Hive Session ID = aaa9c23d-4975-4c10-bb9a-1817c5fa36e6
Logging initialized using configuration in file:/etc/emr/hive/conf/hive-log4j2.properties Async: true
Hive Session ID = 258437d2-f601-42c9-bab3-731b975b0642


3 库操作

本文示例中的数据库以 testdb 为例介绍。

3.1 创建库

CREATE DATABASE IF NOT EXISTS testdb;

当返回信息为:

OK
Time taken: 0.617 seconds

表示创建成功。

3.2 查看库

DESC DATABASE testdb;

查看信息如下所示:

OK
testdb hdfs://iv-ybtfk74d08kdvbpw7bf3:8020/warehouse/tablespace/managed/hive/testdb.db hive USER
Time taken: 0.155 seconds, Fetched: 1 row(s)

3.3 使用库

USE testdb;

返回信息如下所示:

OK
Time taken: 0.034 seconds

3.4 删除库

DROP DATABASE IF EXISTS testdb;

返回信息如下所示,表示删除成功:

OK
Time taken: 0.104 seconds


4 表操作

本文示例中的表以 test_table 为例介绍。

4.1 创建表

CREATE TABLE IF NOT EXISTS test_table 
(
id BIGINT,
value STRING
)
STORED AS ORC;

返回信息如下所示,表示表创建成功:

OK
Time taken: 0.426 seconds

4.2 查看表

DESC FORMATTED test_table;

返回信息如下:

OK
# col_name data_type comment
id bigint
value string
# Detailed Table Information
Database: testdb
OwnerType: USER
Owner: hive
CreateTime: Mon Aug 01 17:48:56 CST 2022
LastAccessTime: UNKNOWN
Retention: 0
Location: hdfs://iv-ybtfk74d08kdvbpw7bf3:8020/warehouse/tablespace/managed/hive/testdb.db/test_table
Table Type: MANAGED_TABLE
Table Parameters:
COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\",\"COLUMN_STATS\":{\"id\":\"true\",\"value\":\"true\"}}
bucketing_version 2
numFiles 0
numRows 0
rawDataSize 0
totalSize 0
transient_lastDdlTime 1659347336
# Storage Information
SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
InputFormat: org.apache.hadoop.mapred.TextInputFormat
OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
Compressed: No
Num Buckets: -1
Bucket Columns: []
Sort Columns: []
Storage Desc Params:
serialization.format 1
Time taken: 0.259 seconds, Fetched: 32 row(s)

4.3 查看所有表

SHOW TABLES;

返回信息如下:

OK
test_table
Time taken: 0.036 seconds, Fetched: 1 row(s)

4.4 删除表

DROP TABLE IF EXISTS test_table;

返回信息如下,表示删除成功:

OK
Time taken: 0.227 seconds


5 SQL 操作

5.1 插入记录

INSERT INTO TABLE test_table VALUES(1, 'value1');

返回信息包含:

OK
Time taken: 15.676 seconds

表示插入成功

5.2 查询表记录

SELECT * FROM test_table LIMIT 5;

返回信息如下:

OK
1 value1
Time taken: 0.195 seconds, Fetched: 1 row(s)

5.3 聚合操作

SELECT value, COUNT(*) FROM test_table GROUP BY value;

返回信息如下:

OK
value1 1
Time taken: 4.207 seconds, Fetched: 1 row(s)