gpt4 book ai didi

hadoop - 在配置单元的外部表中创建分区

转载 作者:可可西里 更新时间:2023-11-01 14:14:15 24 4
gpt4 key购买 nike

我已经在配置单元的内部表中成功创建并添加了动态分区。即通过使用以下步骤:

1-创建源表

2-从本地加载数据到源表

3- 创建了另一个带分区的表 - partition_table

4- 将源表中的数据插入到此表中,从而动态创建所有分区

我的问题是,如何在外部表中执行此操作?我读了很多这方面的文章,但我很困惑,我是否必须指定现有分区的路径才能为外部表创建分区??

例子:第 1 步:

create external table1 ( name string, age int, height int)
location 'path/to/dataFile/in/HDFS';

第 2 步:

alter table table1 add partition(age) 
location 'path/to/already/existing/partition'

我不确定如何在外部表中进行分区。有人可以通过逐步描述来提供帮助吗?

提前致谢!

最佳答案

是的,您必须明确告诉 Hive 您的分区字段是什么。

假设您有一个要在其上创建外部表的 HDFS 目录。

/path/to/dataFile/

假设此目录已经按如下方式存储(分区)部门数据:

/path/to/dataFile/dept1
/path/to/dataFile/dept2
/path/to/dataFile/dept3

这些目录中的每一个都有一堆文件,每个文件包含字段的实际逗号分隔数据,例如姓名、年龄、高度。

e.g.
/path/to/dataFile/dept1/file1.txt
/path/to/dataFile/dept1/file2.txt

现在让我们在上面创建外部表:

第 1 步. 创建外部表:

CREATE EXTERNAL TABLE testdb.table1(name string, age int, height int)
PARTITIONED BY (dept string)
ROW FORMAT DELIMITED
STORED AS TEXTFILE
LOCATION '/path/to/dataFile/';

第 2 步. 添加分区:

ALTER TABLE testdb.table1 ADD PARTITION (dept='dept1') LOCATION '/path/to/dataFile/dept1';
ALTER TABLE testdb.table1 ADD PARTITION (dept='dept2') LOCATION '/path/to/dataFile/dept2';
ALTER TABLE testdb.table1 ADD PARTITION (dept='dept3') LOCATION '/path/to/dataFile/dept3';

完成,运行一次选择查询以验证数据是否加载成功。

关于hadoop - 在配置单元的外部表中创建分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32580356/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com