我正在尝试学习Hive,在参考The Hadoop权威指南时,我有一些困惑。
根据文本,Hive中的分区是通过创建具有相同分区列值的子目录来完成的。但是在Hive中,数据加载只是意味着复制文件,在加载过程中不进行数据验证检查,但在查询期间,Hive也会检查数据是否有分区。或者它如何确定哪个文件应该转到哪个目录?
答案 0 :(得分:0)
或者它如何确定哪个文件应该转到哪个目录?
不需要,您必须在LOAD DATA
命令中设置目标分区的值。在分区表中执行LOAD
操作时,必须通过PARTITION
参数指定要在其中加载数据的特定分区(目录)。根据{{3}}:
加载的目标可以是表格或分区。如果表 是分区,然后必须指定的特定分区 表通过指定所有分区列的值。
例如,在documentation中:
hive> LOAD DATA LOCAL INPATH './examples/files/kv2.txt' OVERWRITE INTO TABLE invites PARTITION (ds='2008-08-15');
hive> LOAD DATA LOCAL INPATH './examples/files/kv3.txt' OVERWRITE INTO TABLE invites PARTITION (ds='2008-08-08');
这两个文件将存储在invites/ds=2008-08-15
和invites/ds=2008-08-08
文件夹中。