You need to enable JavaScript to run this app.
导航
基础使用
最近更新时间:2025.04.01 20:13:40首次发布时间:2024.11.12 16:54:08
我的收藏
有用
有用
无用
无用

Hive 命令行

  1. 登录 LAS 集群节点:
  2. 执行以下命令,切换为 hive 用户。
sudo su  emr
 
-- 环境变量
source ~/.profile
-- 进入hive
hive

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

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

库操作

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

创建库

CREATE DATABASE IF NOT EXISTS testdb;

当返回信息为:

OK
Time taken: 0.617 seconds

表示创建成功。

查看库

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)

使用库

USE testdb;

返回信息如下所示:

OK
Time taken: 0.034 seconds

删除库

DROP DATABASE IF EXISTS testdb;

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

OK
Time taken: 0.104 seconds

表操作

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

创建表

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

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

OK
Time taken: 0.426 seconds

查看表

DESC FORMATTED test_table;

返回信息如下:

OK

查看所有表

SHOW TABLES;

返回信息如下:

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

删除表

DROP TABLE IF EXISTS test_table;

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

OK
Time taken: 0.227 seconds

SQL 操作

插入记录

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

返回信息包含:

OK
Time taken: 15.676 seconds

表示插入成功

查询表记录

SELECT * FROM test_table LIMIT 5;

返回信息如下:

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

聚合操作

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

返回信息如下:

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

HiveServer2 使用

  • 高可用连接串
JDBC 高可用连接串规则如下:  jdbc:hive2://{hive.zookeeper.quorum}/{库名};serviceDiscoveryMode=zooKeeper;zooKeeperNamespace={hive.server2.zookeeper.namespace}

其中:
- {hive.zookeeper.quorum} 值在hive-site.xml中查找
- {hive.server2.zookeeper.namespace} 值在hive-site.xml中查找
- {库名} 值为真实连接的库名

# 目前 LAS平台集成了LDAP进行验证,因此需要提供相应的用户名与密码进行连接,hive 用户通过hive-env.sh文件可以查找到相应的信息, 如下:
HIVE_LDAP_USER="hive"
HIVE_LDAP_PASSWORD="xxx"
  • 单节点连接串
jdbc:hive2://{hiveserver2部署节点}:10000/{库名}
  • 通过官方JDBC 客户端直连hive-server2,需提供连接信息、用户名、密码
package com.example;

import java.sql.*;

/**
 * Hello world!
 *
 */
public class App
{
    private static String driverName = "org.apache.hive.jdbc.HiveDriver";

    public static void main(String[] args) throws SQLException {

        try {
            Class.forName(driverName);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

        // LDAP 中的用户名
        String user = "hive";

        // LDAP 中的用户密码,
        String password = "*******";

        Connection con = DriverManager.getConnection(
                "jdbc:hive2://las-master-1:10000", user, password);

        Statement stmt = con.createStatement();

        String sql = "show databases";
        ResultSet res = stmt.executeQuery(sql);

        while (res.next()) {
            System.out.println(res.getString(1));
        }

    }
}