在hive的哪个阶段的Bucketing中,是否会创建存储桶文件?
create table emp( id int, name string, country string)
clustered by( country)
INTO 2 BUCKETS
row format delimited
fields terminated by ','
stored as textfile ;
如果我有20个桶,只有4行将创建多少个文件?
答案 0 :(得分:0)
创建表时会创建存储桶。它们将作为表目录中的独立文件位于Hive仓库中。在存储桶表中插入新记录后,Hive将计算存储桶列值的哈希值,并获取存储桶文件的指针。对于你的20个桶,你将在开始时有20个空文件,但是你的4个记录的确切位置将取决于桶列值上的散列函数的结果:
**record.country.value => hashfunction(record.country.value) = bucketNumber**
您可以按照此article
中的Bucket table部分中描述的步骤重现它