hive分区表中要考虑的第一列

h43kikqp  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(400)

在配置单元中创建分区表时,是否必须始终为分区列选择最后一列。如果我选择第一列作为分区,我不能过滤数据,有没有办法选择第一列作为分区?

ohfgkhjo

ohfgkhjo1#

我猜您面临的问题是,您的本地系统或hdfs中已经有表“source”,并且您希望将其上载到分区表。您希望在配置单元中对源表中的第一列进行分区。由于源表没有标题,我想如果我们尝试直接将文件上载到配置单元目标文件夹中,我们将无法在这里执行任何操作。我知道的唯一替代方法是在配置单元中创建一个非分区表,其结构与源文件完全相同。然后先将源数据上传到非分区表中,再将非分区表中的数据复制到分区表中。假设源文件是这样的 create table source(eid int, ename int, esal int) partitioned by (dept string) 上传数据的非分区表如下所示 create table nopart(dept string, esal int,ename string, eid int) 然后通过命令使用动态分区 insert overwrite table source partition(dept) select eid,ename,esal,dept from nopart; 参数的顺序是这里唯一的一点。

r55awzrz

r55awzrz2#

在hive中,如果要对表进行分区,必须在表创建时首先定义分区列将数据填充到表中时,需要指定如下内容:
“插入到分区表分区(状态)从临时\u tbl中选择id、名称、状态”
通过这种方式,您可以仅基于最后一列进行分区。如果要在第一列的基础上进行分区。你必须为此写一个mapreduce作业。这是唯一的选择。

相关问题