2016-05-01 61 views
1

我想知道,如果它能夠從ORC格式存儲在Hadoop中的文件系統(users.tbl)的文件創建一個配置單元表文件創建蜂巢表。在閱讀ORC格式時,我認爲它優於文本。所以我想知道它是否可能創建一個使用stored as orc tblpropertieslocation屬性的配置單元表來從hdfs文件創建一個表格,但採用orc格式。從存儲在HDFS在獸人格式

東西爲:

create table if not exists users 
(USERID BIGINT, 
NAME STRING, 
EMAIL STRING, 
CITY STRING) 
STORED AS ORC TBLPROPERTIES ("orc.compress"="SNAPPY") 
LOCATION '/tables/users/users.tbl'; 

insted的文字:

create table if not exists users 
    (USERID BIGINT, 
    NAME STRING, 
    EMAIL STRING, 
    CITY STRING) 
    ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE 
    LOCATION '/tables/users/users.tbl'; 

回答

0

你不能這樣做,在只有一步。 create table語句不處理數據,只需指定格式和位置即可。

我的建議是,你創建一個使用時間表中的「分類爲TEXTFILE」創建語句和(使用一個空位置)創建使用ORC作爲存儲格式的決賽桌。

然後在「ORC表」一切從時間「文字表」的行插入。

Insert [overwrite] table orcTable select col1, col2 from textTable; 

插入覆蓋將用新的數據替換表中的所有數據。如果您只想添加新數據,您將使用「插入表格...」。

導入後,你可以刪除的時間「文本表」。

+0

..我不認爲時態表是存在於蜂巢......創建一個外部並給出你的文本文件的位置在那裏..從這個外部表只需運行插入選擇到orc table..and你有獸人表的地方。 –

+0

它是暫時的,因爲它只用於將數據插入到最終表中,之後很可能您會刪除它。但我同意,這不是像其他關係數據庫中的「臨時」表,它會在用戶會話關閉時自動刪除表。 – RojoSam

0

1.創建在蜂巢的表。

create table MyDB.TEST (
Col1 String, 
Col2 String, 
Col3 String, 
Col4 String) 
STORED AS INPUTFORMAT 
    'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat' 
OUTPUTFORMAT 
    'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat'; 

2.將數據加載到表中。

LOAD DATA INPATH '/hdfs/dir/folder/to/orc/files/' INTO TABLE MyDB.TEST;