【发布时间】:2017-07-01 00:42:47
【问题描述】:
如何在已经分区的 hive 表上应用分区。加载数据后,我无法将分区数据提取到文件夹中。
【问题讨论】:
-
请添加更多详细信息,例如,1. 旧分区是否仍然存在。 2. 新分区是在现有列上完成的,还是添加了任何新列 3. 创建新分区后,您如何加载数据。这些可以决定将数据加载到分区中的方式。查看here 了解有关更改表、列和分区的更多信息
如何在已经分区的 hive 表上应用分区。加载数据后,我无法将分区数据提取到文件夹中。
【问题讨论】:
hive 分区的第一条规则是分区列应该是数据中的最后一列。由于数据已经分区,假设我们正在对性别 M/F 的数据进行分区,将在每个目录中创建两个目录,gender=M 和 gender=F,相应的性别数据将可用,并且该数据中的最后一列将是性别。
如果您想在分区表上再次对数据进行分区,请使用 insert into select 并确保您使用的最后一列是您要对分区数据进行的分区列。
【讨论】:
您是否使用 Hdfs 命令手动添加了分区?在这种情况下,除非您指定“alter table add partition”,否则元存储将不会跟踪正在添加的分区... 试试这个
MSCK REPAIR TABLE table_name;
如果不是这样,请尝试删除分区并重新创建分区。使用 alter table 命令执行此操作。但你会丢失数据。如果您正在执行动态分区插入,则应将您的分区列值作为最后一列提及。
【讨论】: