2016-05-10 36 views
1

在配置单元中创建分区表时,是否必须始终选择分区列的最后一列。 如果我选择第一列作为分区,我不能做过滤数据,有什么办法可以选择分区的第一列吗?配置单元第一列要在分区表中考虑

回答

0

在配置单元中,如果要分区表,则必须在表创建期间首先定义分区列。 &而数据填充到表中,您需要指定如下:

“INSERT INTO partitioned_table PARTITION(状态)SELECT ID,名称,从temp_tbl状态”

这样

使用,你可以分区基础上最后一列只要。如果你想在第一列的基础上进行分区。你必须为此写一个Mapreduce作业。这是唯一可用的选项。

0

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

相关问题