2015-04-05 59 views
0

我試圖通過使用下面的命令來創建一個蜂巢鬥:桶也沒有創造在Hadoop蜂箱

hive> create table emp(id int, name string, country string) 
clustered by(country) 
row format delimited 
fields terminated by ',' 
stored as textfile ; 

命令成功執行:當我加載數據到這個表中,它成功並執行所有數據在使用select * from emp時顯示。

但是,在HDFS上它只創建一個表,並且只有一個文件與所有數據一起存在。也就是說,沒有特定國家記錄的文件夾。

+0

看起來很難理解你的問題是什麼...... – coderz 2015-04-05 14:58:03

+0

好吧,在創建表格後,我已經加載數據,但當我在hdfs上瀏覽時,只有一個表/文件包含所有數據,即桶不是創建hdfs – 2015-04-05 17:20:40

回答

1

首先,在DDL語句中,您必須明確提及您需要多少個存儲桶。

create table emp(id int, name string, country string) 
clustered by(country) 
INTO 2 BUCKETS 
row format delimited 
fields terminated by ',' 
stored as textfile ; 

在上面的聲明中,我提到了2個桶,同樣你可以提及任何你想要的數字。

你還沒有完成!

之後,在將數據加載到表格中時,還必須提及蜂巢的下面提示。

set hive.enforce.bucketing = true; 

這應該這樣做。

之後,您應該能夠看到在表目錄下創建的文件數量與DDL語句中提到的存儲桶數量相同。

Bucketing不會創建HDFS文件夾,相反如果您想爲某個國家創建單獨的floder,那麼您應該使用PARTITION。

請詳細介紹hive分區和分區。

+0

是否有任何方式,我可以得到記錄下的文件作者= A作爲他們的文件中的10個文件,而不是他們的合併記錄在同一文件中的記錄。這是在行分片上創建的文件,並且可以從一個文件訪問所有文件 – 2015-04-08 09:11:45