建立表

使用分割槽建立託管表並儲存為序列檔案。假定檔案中的資料格式由 Ctrl-A (^A) 欄位分隔,並由換行符分隔行。下表是在 Hive 配置檔案 hive-site.xml 中的鍵 hive.metastore.warehouse.dir 的值中指定的配置單倉庫目錄中建立的。

CREATE TABLE view
(time INT, 
id BIGINT,
url STRING, 
referrer_url STRING,
add STRING COMMENT 'IP of the User')
COMMENT 'This is view table'
PARTITIONED BY(date STRING, region STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\001'
STORED AS SEQUENCEFILE;

使用分割槽建立外部表並儲存為序列檔案。假定檔案中的資料格式由 ctrl-A 以欄位分隔,並由換行符分隔行。下表是在指定的位置建立的,當我們已經擁有資料時它會很方便。使用外部表的一個優點是我們可以刪除表而不刪除資料。例如,如果我們建立一個表並意識到模式是錯誤的,我們可以安全地刪除表並使用新模式重新建立而不用擔心資料。其他優點是如果我們在相同的檔案上使用其他工具如 pig,我們刪除表後即可繼續使用它們。

CREATE EXTERNAL TABLE view
(time INT, 
id BIGINT,
url STRING, 
referrer_url STRING,
add STRING COMMENT 'IP of the User')
COMMENT 'This is view table'
PARTITIONED BY(date STRING, region STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\001'
STORED AS SEQUENCEFILE
LOCATION '<hdfs_location>';

使用 select 查詢建立表並從查詢中填充結果,這些語句稱為 CTAS(Create Table As Select)

CTAS 中有兩個部分,SELECT 部分​​可以是 HiveQL 支援的任何 SELECT 語句。CTAS 的 CREATE 部分從 SELECT 部分​​獲取結果模式,並使用其他表屬性(如 SerDe 和儲存格式)建立目標表。

CTAS 有以下限制:

  • 目標表不能是分割槽表。
  • 目標表不能是外部表。
  • 目標表不能是列表儲存表。
CREATE TABLE new_key_value_store
ROW FORMAT SERDE "org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe"
STORED AS RCFile
AS
SELECT * FROM page_view
SORT BY url, add;

建立表格如:

CREATE TABLELIKE 形式允許你準確地複製現有的表定義(不復制其資料)。與 CTAS 相反,下面的語句建立了一個新表,其定義與表名以外的所有細節中的現有表完全匹配。新表不包含任何行。

CREATE TABLE empty_page_views
LIKE page_views;