在hive中创建存储桶文件时

时间:2017-02-28 07:06:58

标签: hadoop mapreduce hive hiveql

在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行将创建多少个文件?

1 个答案:

答案 0 :(得分:0)

创建表时会创建存储桶。它们将作为表目录中的独立文件位于Hive仓库中。在存储桶表中插入新记录后,Hive将计算存储桶列值的哈希值,并获取存储桶文件的指针。对于你的20个桶,你将在开始时有20个空文件,但是你的4个记录的确切位置将取决于桶列值上的散列函数的结果:

**record.country.value => hashfunction(record.country.value) = bucketNumber**

您可以按照此article

中的Bucket table部分中描述的步骤重现它