Hive数仓操作(二)

Hive 数据类型与连接

Hive 是一个用于处理大规模数据集的工具,支持多种数据类型以满足不同的需求。本文将详细介绍 Hive 的基本数据类型和集合数据类型。

一、Hive 基本数据类型

Hive 提供了多种基本数据类型,适用于不同的数据存储和处理需求:

数据类型 描述 长度 示例
TINYINT 1 字节有符号整数 1 byte 20
SMALLINT 2 字节有符号整数 2 bytes 20
INT 4 字节有符号整数 4 bytes 20
BIGINT 8 字节有符号整数 8 bytes 20
BOOLEAN 布尔类型,取值为 true 或 false - TRUE, FALSE
FLOAT 单精度浮点数 4 bytes 3.14159
DOUBLE 双精度浮点数 8 bytes 3.14159
STRING 字符串类型,可指定字符集 最大 2GB 'now is the time'或"for all good men"
TIMESTAMP 时间戳类型 - '2023-10-01 12:00:00'
BINARY 字节数组 - (binary data)

注意

  • Hive 的 STRING 类型相当于数据库中的 VARCHAR 类型,但不能声明最大字符数,理论上可以存储 2GB 的字符数据。
  • Hive 在处理时间时通常使用字符串格式存储日期和时间,支持灵活的时间字符串格式。

二、Hive 集合数据类型

Hive 还支持集合数据类型,这些数据类型允许存储复杂的数据结构。

数据类型 描述 语法示例
STRUCT 类似于 C 语言中的结构体,通过"点"符号访问元素内容。 struct<first:STRING,last:STRING>
MAP 键-值对集合,使用数组表示法访问数据。 map<STRING, STRING>
ARRAY 数组,相同类型元素的集合,每个元素有一个编号。 array<STRING>

例子

  1. STRUCT 示例

    sql 复制代码
    SELECT person.name.first FROM table;
  2. MAP 示例

    sql 复制代码
    SELECT person.address['city'] FROM table;

    假设有一个 address 列,这个列的类型是 MAPaddress 列存储了以下键-值对:

  • 'city' -> 'New York'
  • 'state' -> 'NY'
  • 'zip' -> '10001'
  1. ARRAY 示例

    sql 复制代码
    SELECT names[1] FROM table;  -- 获取第二个名字

三、数据导入 Hive

在 Hive 中,数据的导入通常有两种方式:

  • Pull(自己获取数据)

    通过工具、存储过程或 SQL 语句,从其他系统查询数据,经过处理后保存到 Hive 中。

  • Push(其他系统提供数据)

    其他系统将数据保存为文件(如 TXT 和 CSV 格式),然后将文件导入 Hive。这通常涉及文件和表的映射关系。


四、Hive的连接

1. 直接使用 Hive 客户端

在 Linux 命令行下,你可以直接输入 hive 命令来启动 Hive 客户端。

bash 复制代码
hive
终端
plaintext 复制代码
$ hive
Logging initialized using configuration in /path/to/hive/conf/hive-log4j.properties
Hive CLI is running on Apache Hive <version> (Hive <version>)
Type "exit" or "quit" to quit.
hive (default)>
结果:
  • 当看到提示符 hive (default)> 时,表示你已成功进入 Hive 客户端。
  • 注意:这种方式仅能连接到本地的 Hive 服务。

2. 使用 Beeline 客户端

要使用 Beeline 客户端,首先需要启动被连接的 HiveServer2 服务。启动命令如下:

bash 复制代码
hiveserver2 &
连接 Beeline:

然后,你可以通过 Beeline 连接到 HiveServer2。启动 Beeline 客户端:

bash 复制代码
beeline
连接到 Hive:

在 Beeline 提示符下,使用以下命令连接到 Hive:

bash 复制代码
!connect jdbc:hive2://192.168.150.130:10000
终端
plaintext 复制代码
beeline> !connect jdbc:hive2://192.168.150.130:10000
Connecting to jdbc:hive2://192.168.150.130:10000
Enter username for jdbc:hive2://192.168.150.130:10000: root
Enter password for jdbc:hive2://192.168.150.130:10000: ********
结果:
  • 输入连接信息后,你将被提示输入用户名和密码(如果需要)。
  • 成功连接后,你就可以在 Beeline 中执行 SQL 查询。

3. 使用第三方工具连接

例如,使用 DataGrip 或其他 SQL 客户端工具连接到 Hive。以 DataGrip 为例:

设置 DataGrip 连接:
  1. 打开 DataGrip。
  2. 创建新的数据源,选择 Hive 作为数据库类型。
  3. 填入连接信息:
    • 驱动: 选择 Hive JDBC 驱动。
    • URL : jdbc:hive2://192.168.150.130:10000
    • 用户名密码(如果需要)。
结果:
  • 点击"测试连接"确认连接成功。
  • 成功连接后,可以在 DataGrip 中编写和执行 Hive 查询。

相关推荐
happycao12320 分钟前
Flink 02 | 英雄莫问出处 Flink丰富多彩的数据源
大数据·flink
Norris Huang22 分钟前
如何在 Amazon EMR 中运行 Flink CDC Pipeline Connector
大数据·flink
StarRocks_labs24 分钟前
饿了么基于Flink+Paimon+StarRocks的实时湖仓探索
大数据·flink·湖仓一体·paimon·lakehouse
isNotNullX26 分钟前
数据流处理技术与Flink框架
大数据·数据库·数据仓库·flink
wrx繁星点点1 小时前
行为型模式-策略模式详解
java·开发语言·数据结构·数据库·tomcat·hibernate·策略模式
沙漏无语1 小时前
MySql5.7.26安装和配置
数据库
bug菌¹1 小时前
滚雪球学MySQL[5.1讲]:事务与并发控制
数据库·mysql·oracle
root_101 小时前
centos 7 通过MegaCli 可以查询RAID硬盘
运维·服务器·数据库
KuaiKKyo1 小时前
QT九月28日
java·数据库·qt
支付宝官方开放平台1 小时前
1024「爱码士」活动✖️开发者社区
大数据·c语言·c++·人工智能·python·github·aigc