2014-07-01 82 views

回答

9

只需使用標準蜂房語法:

LOAD DATA INPATH 'filepath' INTO TABLE tablename 

在這裏的文件路徑可以參考:

  • 相對路徑,如project/data1
  • 絕對路徑,如/user/hive/project/data1
  • 具有方案和(可選)權限的完整URI,例如hdfs://namenode:9000/user/hive/project/data1

文件路徑可以是目錄,並且該目錄中的所有文件都將被移動到表中。

來源:Hive Language Manual

1

A)下面的命令可以使用多個時間來加載多個文件:

LOAD DATA INPATH 'file_1/path/hdfs' INTO TABLE tablename; 
LOAD DATA INPATH 'file_2/path/hdfs' INTO TABLE tablename; 
....... 

or 

LOAD DATA LOCAL INPATH 'file_1/path/local' INTO TABLE tablename; 
LOAD DATA LOCAL INPATH 'file_2/path/local' INTO TABLE tablename; 

....

INTO關鍵字附加文件之後的數據文件。不要錯誤地使用OVERWRITE。

B)當文件在一個目錄中:

LOAD DATA INPATH 'dir/path/hdfs' INTO TABLE tablename; 
or, 
LOAD DATA LOCAL INPATH 'dir/path/local' INTO TABLE tablename; 

IMP:當目錄包含非數據文件(最有可能在HDFS),上述命令引發錯誤。例如,豬(或其他工具)生成了一個名爲my_data_dir的目錄。在my_data_dir下有兩個數據文件/my_data_dir/part-m-00000 & /my_data_dir/part-m-00001。還有一個名爲/my_data_dir/_logs

在這種情況下,日誌文件,如果你運行上面的命令提示錯誤提的日誌文件。刪除日誌文件和上面的命令工作正常。

2

爲什麼不通過指定某個位置並將文件轉儲到該特定位置來在Hive中創建外部表。您的外部表格將自動接收轉儲到該文件夾​​中的任何文件(如果模式相同)。

相關問題