2015-05-11 88 views

回答

4

您可以通過使用LIKE關鍵字來完成此操作。

create table new_table_name LIKE old_table_name 

這將創建沒有數據的表結構。

+0

我將首先在複雜選擇上創建視圖,然後發出「像view_name一樣創建表」 – xu2002261

0

使用create EXTERNAL table而不是create table。觀察外部關鍵字。

+1

它似乎不起作用..... hive>創建EXTERNAL表p作爲select * from big_test_table; 創建EXTERNAL表p作爲select * from big_test_table; FAILED:SemanticException [錯誤10070]:CREATE-TABLE-AS-SELECT無法創建外部表 – xu2002261

+0

呵呵!!它看起來與外部源的外部工作,但不是配置單元表。只是好奇,爲什麼你想從現有的配置單元表創建一個配置單元表?我的意思是你可以使用現有的HIVE表本身,而無需創建新的表 – Abhishek

+0

實際上,新創建的表來自非常複雜的查詢。這不是來自簡單的單一表格。該查詢可能包含GROUP BY或JOIN。 – xu2002261

0

在select語句中使用where條件並給出值其中從配置單元中不提取任何記錄。

table name demo1

id name  country 
1  abc  India 
2  xyz  Germany 
3  pqr  France 

In CREATE TABLE…AS SELECT in HIVE 
Create table demo2...As SELECT id, name, country from demo1 where id=0; 

所以,在上述其中id的條件被給定爲0,並從上述數據選擇語句將獲取沒有記錄,類似地選擇在一個值,其中條件返回沒有記錄。因此沒有數據將被插入新創建的表中。

+0

這不是正確的方法。這是一個黑客,並可能無法正常工作,如果未來的條件成真!要插件,如果where子句永遠不是true,那麼該配置單元表總是會產生0個結果,而空表可能沒有用處: – Abhishek

+0

select語句可能非常複雜,我不確定哪個列可以用於此目的。 – xu2002261

+0

正如我們所知,選擇由MapReduce作業執行,我們可以繞過mapred作業嗎?在此之後,表格仍可以創建。 – xu2002261

0

@ Sunil的答案也幫助了我,我只是發佈了一個在我的情況下是必要的補充。 源表是阿夫羅格式,但新的一個I在ORC想要的,因此,

CREATE TABLE dataaggregate_orc_empty LIKE dataaggregate_avro_compressed ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.orc.OrcSerde' STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat' TBLPROPERTIES ('orc.compress'='ZLIB'); 

上述步驟可以在兩個步驟中被分割,如果需要的話:

CREATE TABLE dataaggregate_orc_empty LIKE dataaggregate_avro_compressed; 

alter table dataaggregate_orc_empty set fileformat ORC; 

我很高興如果某人爲此過程中發生的數據格式更改和相關問題(如果有)提供輸入。

相關問題