2016-09-23 13 views
0

我想從多級目錄數據加載到我的蜂巢table.but錯誤是:蜂巢:從多級目錄加載數據

hive> LOAD DATA INPATH 'hdfs://hadoop1:9000/logClassify/unLock' INTO 
TABLE unLock; 

失敗:SemanticException線1:17的路徑無效 'HDFS:// hadoop1:9000/logClassify /解鎖 '':源包含目錄: HDFS:// hadoop1:9000/logClassify /解鎖/ 2016

我在hive- SETT的PARAMS site.xml文件:

<property> 
    <name>mapred.input.dir.recursive</name> 
    <value>true</value> 
</property> 

<property> 
    <name>hive.mapred.supports.subdirectories</name> 
    <value>true</value> 
</property> 

我不知道爲什麼?

+0

看來你在你的hdfs:// hadoop1:9000/logClassify/unLock目錄中有明智的數據。更好地使用配置單元分區並創建分區列年。 – Sanket

回答

0

,如果你想從本地存儲洛達數據

LOAD DATA LOCAL INPATH '/home/data' INTO TABLE table_name; 

,如果你想從HDFS數據只是刪除本地

LOAD DATA LOCAL INPATH '/user/data' INTO TABLE table_name; 
+0

有沒有必要添加主機名(hdfs:// hadoop1:9000)到您的路徑 –

+0

和您的上述錯誤'源包含目錄:hdfs:// hadoop1:9000/logClassify/unLock/2016'說這個位置包含目錄,所以給它的文件適當的目的地路徑。 –

+0

我想遞歸子目錄,因爲在不同的子目錄中有很多文件。 – Chris

0

試試這個:

在蜂巢命令行界面請輸入:

set hive.input.dir.recursive=true; 
set hive.mapred.supports.subdirectories=true; 
set hive.supports.subdirectories=true; 

之後,加載數據。例如,如果你有一個目錄的級別:

LOAD DATA INPATH "/data/testdata/*" INTO TABLE testtable; 

對於二級目錄:

LOAD DATA INPATH '/data/testdata/* /*' INTO TABLE testtable; 

希望這會有所幫助。

0

嘗試此:

在蜂房命令行界面

輸入:

組hive.input.dir.recursive = TRUE;

set hive.mapred.supports.subdirectories = true;

set hive.supports.subdirectories = true;

之後,加載數據。例如,如果你有一個目錄的級別:

LOAD DATA INPATH 「/數據/ TESTDATA/」 INTO TABLE TestTable的; *

對於二級目錄:

LOAD DATA INPATH'/ data/testdata//'INTO TABLE testtable;

希望這會有所幫助。