Hive 分区表 & 数据加载

本文详细介绍了Hive表数据的导入方式,包括本地上传至HDFS、本地导入、HDFS导入、覆盖导入、查询导入和insert导入。接着,深入探讨了Hive分区表的概念、创建语法、多分区表创建、查看分区数据和加载数据的方法。通过分区,可以提高数据检索和管理效率,减少全表扫描的资源消耗。最后,还提及了修改、添加和删除分区的操作。

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

1. Hive表数据的导入方式

1.1 本地上传至hdfs

命令:

hdfs dfs -put [文件名] [hdfs绝对路径]

例如:测试文件 test_001.txt 内容如下

图片

在 hdfs 绝对路径:/user/hive/warehouse/mytest.db/ 下有一张表 test_001,建表语句如下:

create table test_001(id string, name string) row format delimited fields terminated by '\t';

使用如下命令将 test_001.txt 的内容上传至 /user/hive/warehouse/mytest.db/test_001 表中

hdfs dfs -put test_001.txt /user/hive/warehouse/mytest.db/test_001

注意:

test_001.txt 文件内容中:数据类型、数据列数、列数之间的分隔符要与 hdfs 中 test_001 表定义的一一对应。

1.2 本地导入

命令:

load data local inpath [本地文件路径] into table [表名];

示例:

load data local inpath '/user/xiaomin.liu/hive_testdata/student.csv' into table student;

含义:

将 /user/xiaomin.liu/hive_testdata 目录下 student.csv 文件的内容加载至 hdfs 中的 student 表中。

注意:

1. student.csv 文件内容中:数据类型、数据列数、列数之间的分隔符要与 hdfs 中 student 表定义的一一对应。

2. 使用本地导入的方式加载数据至 hive,使用的是复制操作,即当本地路径下的文件被加载至 hive 后,该本地路径下的文件依然存在,不会消失。

1.3 hdfs导入

命令:

load data inpath [文件在hdfs中的路径] into table [表名];

示例:

load data inpath '/user/warehouse/test/student.txt' into table student;

含义:

将 hdfs 路径为 /user/warehouse/test 下的 student.txt 文件的数据加载至 hdfs 中的 student 表中。

注意:

使用 hdfs 导入数据至 hive,使用的是剪切操作,即原 hdfs

Hive中,分区表是一种特殊类型的表,它允许我们将数据按照某些列值进行分割存储,提高查询效率。如果你想用`APPEND`模式将数据写入Hive分区表,首先需要确认几个步骤: 1. **创建或选择分区表**: 确保你的目标表是一个分区表,可以指定特定的分区键值,如日期、地区等。例如: ```sql CREATE TABLE my_table (col1 string, col2 int, ... partitioned_by date) PARTITIONED BY (date STRING); ``` 2. **明确分区路径**: 在插入数据之前,你需要知道数据应该被写入哪个具体的分区。这通常是基于分区键的值,例如: ```sql INSERT INTO TABLE my_table PARTITION (date = '2023-04-01') SELECT * FROM source_data; ``` 如果你想追加到已存在的分区,只需指定相同的分区键。 3. **使用`APPEND`选项**: Hive默认会覆盖整个分区,如果你想要追加而不是替换数据,需要设置`append`标志。然而,在Hive中,`APPEND`通常不是一种直接的操作选项,因为它是通过其他工具(如Impala)或SQL客户端的额外配置来实现的。如果你使用的是Impala,可以在客户端的配置文件中设置`impala.server.append`为`true`,或者在命令行中通过`-a`或`--append`参数来请求追加操作。 请注意,不是所有的Hive写入操作都支持追加,尤其是在写入大型数据集时,因为Hive默认倾向于全量加载。如果你需要频繁地向分区添加新数据,可能需要考虑其他的批量处理或流式处理技术。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wu_Candy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值