2014-01-20 52 views
0

我正在閱讀O'Reilly Hadoop有關分區表的一本書。這是我正在運行的代碼。在Hadoop中對錶進行分區

此代碼創建一個表,它似乎執行沒有錯誤。

CREATE TABLE logs (ts BIGINT, line STRING) 
PARTITIONED BY (dt STRING, country STRING); 

當我運行下面的命令時,它不會返回任何可疑內容。

SHOW PARTITIONS logs; 

當我運行的示例代碼的下一部分,我得到一個無效的路徑錯誤。

LOAD DATA LOCAL INPATH '/user/paul/files/dt=2010-01-01/country=GB/test.out' 
INTO TABLE logs 
PARTITION (dt='2001-01-01', country='GB'); 

我已經肯定創建的文件,我可以通過色相在以下位置瀏覽它。

/user/paul/files/dt=2010-01-01/country=GB 

這是特定的錯誤。

FAILED: SemanticException Line 1:23 Invalid path ''/user/paul/files/dt=2010-01-01/country=GB/test.out'': No files matching path file:/user/paul/files/dt=2010-01-01/country=GB/test.out 

我在這裏丟失了明顯的東西嗎?

回答

0

這只是表示在'/user/paul/files/dt=2010-01-01/country=GB/test.out'在本地文件系統上找不到文件。

0

您創建的文件'/user/paul/files/dt=2010-01-01/country=GB/test.out'是存儲在HDFS或本地文件系統中的文件嗎?如果它在HDFS中,則不能使用本地inpath 預先移除本地。我不記得,但你可能還需要事先修改表:ALTER TABLE table_name ADD PARTITION(partCol ='value1')location'loc1';