泉缘泉 发表于 2024-12-31 03:59:05

Hive的功能,Hive创建表的⽅式,Hive的表有⼏种


[*]Hive 功能形貌

[*]数据存储与管理

[*]Hive 是创建在 Hadoop 之上的数据仓库基础架构,它可以将结构化的数据文件映射为一张数据库表。它可以或许存储海量的数据,并且支持对存储在 Hadoop 分布式文件体系(HDFS)或其他兼容存储体系(如 Amazon S3 等)中的数据举行高效的管理。
[*]比方,对于一个大型电商公司,每天会产生海量的订单数据、用户数据等,这些数据可以存储在 HDFS 中,然后通过 Hive 举行管理,就像管理传统数据库中的表一样。

[*]数据查询与分析

[*]Hive 提供了类似 SQL(Hive SQL,也称为 HiveQL)的查询语言,方便数据分析师和开发人员对存储的数据举行查询和分析。它可以执行复杂的数据分析操作,如聚合(SUM、COUNT、AVG 等)、过滤(WHERE 子句)、连接(JOIN 操作)等。
[*]好比,通过 Hive 可以查询出某个时间段内购买金额最高的用户列表,大概分析不同地区用户的购买行为等。

[*]数据 ETL(Extract,Transform,Load)操作

[*]在数据处理过程中,Hive 可以用于提取数据(从原始数据源),转换数据(如数据清洗、格式转换、数据尺度化等),并将处理后的数据加载到目标数据存储中。它支持多种数据格式,包括文本文件、序列文件、ORC(Optimized Row Columnar)、Parquet 等,方便在不同的数据格式之间举行转换。
[*]比方,将从日志文件中提取的原始文本数据举行清洗和转换,将时间戳格式统一,然后加载到 Hive 表中,以便后续举行分析。


[*]Hive 创建表的方式

[*]使用 CREATE TABLE 语句创建表

[*]这是最基本的方式,类似于传统数据库中创建表的操作。可以定义表的列名、数据范例、列的解释等信息。比方: 收起
sql
CREATE TABLE employees (
    id INT,
    name STRING,
    department STRING
);

[*]可以指定表的存储格式,如 ORC、Parquet 等,还可以添加分区信息,比方: 收起
sql
CREATE TABLE sales (
    product_id INT,
    sales_date STRING,
    amount DECIMAL(10,2)
)
PARTITIONED BY (year STRING, month STRING);


[*]通过复制已有的表来创建新表(CREATE TABLE AS SELECT)

[*]可以基于现有的表或查询结果来创建新表。比方,从一个包含所有用户信息的表中创建一个只包含活跃用户信息的新表: 收起
sql
CREATE TABLE active_users AS
SELECT * FROM all_users WHERE is_active = 1;

[*]这种方式在数据预处理、数据子集提取等场景中非常有用。

[*]使用动态查询来创建表(通过脚本)

[*]可以编写脚本,根据一定的条件动态地创建表。比方,根据日期动态创建分区表,每天的分区表结构相同,但表名或分区值根据日期变化: 收起
python
# 假设这是一个使用Python的脚本,通过subprocess等模块调用Hive命令
import subprocess
import datetime

current_date = datetime.date.today()
year = str(current_date.year)
month = str(current_date.month)
table_name = f"sales_{year}_{month}"
create_table_query = f"""
CREATE TABLE {table_name} (
    product_id INT,
    sales_date STRING,
    amount DECIMAL(10,2)
)
PARTITIONED BY (year STRING, month STRING);
"""
subprocess.call(["hive", "-e", create_table_query])



[*]Hive 表的范例

[*]管理表(Managed Table)

[*]也称为内部表,这种表的数据存储由 Hive 举行管理。当创建一个管理表时,Hive 会将数据存储在默认的数据仓库目录(通常是 HDFS 中的一个目录)下,并且对数据的生命周期举行管理,包括数据的加载、删除等操作。
[*]比方,当删除一个管理表时,其对应的存储在 HDFS 中的数据也会被删除。

[*]外部表(External Table)

[*]外部表的数据存储位置是由用户本身定义的,Hive 只是对这些外部数据举行映射。数据的所有权和管理不属于 Hive,即使在 Hive 中删除外部表,数据仍然保存在原来的存储位置。
[*]好比,对于已经存在于 HDFS 中的一些数据,通过创建外部表来举行查询和分析,而不用担心 Hive 操作会意外删除这些数据。

[*]分区表(Partitioned Table)

[*]分区表是一种对数据举行逻辑分别的表。通过按照某个或某些列的值(如日期、地区等)将数据分别到不同的分区中,可以进步查询性能。比方,一个销售数据表可以按照年份和月份举行分区,这样在查询特定年份和月份的销售数据时,只必要扫描相应的分区,而不必要扫描整个表。

[*]桶表(Bucketed Table)

[*]桶表是将数据按照某个列的哈希值分别到不同的桶(bucket)中。桶表可以进一步优化数据的抽样和某些特定范例的查询。比方,对于一个用户数据表,可以根据用户 ID 的哈希值将用户数据分别到不同的桶中,这样在举行基于用户 ID 的连接操作等时,可以进步效率。



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Hive的功能,Hive创建表的⽅式,Hive的表有⼏种