HiveQL DDL 常用QL示例資料

来源:http://www.cnblogs.com/jottings/archive/2017/10/25/7722683.html
-Advertisement-
Play Games

hive-version2.1.1 DDL操作 Create/Drop/Alter/Use Database 1 //示例 2 create database if not exists testdb; 1 //示例 2 drop database testdb; 說明:restrict不跟參數為默 ...


 hive-version2.1.1

DDL操作

Create/Drop/Alter/Use Database

創建資料庫
1 //官方指導
2 CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name
3   [COMMENT database_comment]
4   [LOCATION hdfs_path]
5   [WITH DBPROPERTIES (property_name=property_value, ...)];

 1 //示例 2 create database if not exists testdb; 

刪除資料庫
1 //官方指導
2 DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT|CASCADE];

 1 //示例 2 drop database testdb; 

說明:restrict不跟參數為預設參數,如果資料庫不為空,則會刪除失敗;

   cascade 如果資料庫有表時也要刪除。

修改資料庫
1 //官方指導
2 ALTER (DATABASE|SCHEMA) database_name SET DBPROPERTIES (property_name=property_value, ...);   -- (Note: SCHEMA added in Hive 0.14.0)
3  
4 ALTER (DATABASE|SCHEMA) database_name SET OWNER [USER|ROLE] user_or_role;   -- (Note: Hive 0.13.0 and later; SCHEMA added in Hive 0.14.0)
5  
6 ALTER (DATABASE|SCHEMA) database_name SET LOCATION hdfs_path; -- (Note: Hive 2.2.1, 2.4.0 and later)
1 //示例1 set dbproperties 設置資料庫屬性
2 alter database testdb set dbproperties('name'='xiaoming'); 
1  //示例2 set owner 修改所屬者名字和類型
2  alter database testdb set owner user root;

說明:SET LOCATION要2.2.1,2.4.0及更高版本才支持,不會更改資料庫現有的內容的位置,創建新表時新表父目錄會更改。

使用資料庫
1 //官方指導2 USE database_name;3 USE DEFAULT;
//示例USE testdb;

Create/Drop/Truncate Table

創建表

 1 //官方指導
 2 CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name    -- (Note: TEMPORARY available in Hive 0.14.0 and later)
 3   [(col_name data_type [COMMENT col_comment], ... [constraint_specification])]
 4   [COMMENT table_comment]
 5   [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
 6   [CLUSTERED BY (col_name, col_name, ...) [SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS]
 7   [SKEWED BY (col_name, col_name, ...)                  -- (Note: Available in Hive 0.10.0 and later)]
 8      ON ((col_value, col_value, ...), (col_value, col_value, ...), ...)
 9      [STORED AS DIRECTORIES]
10   [
11    [ROW FORMAT row_format] 
12    [STORED AS file_format]
13      | STORED BY 'storage.handler.class.name' [WITH SERDEPROPERTIES (...)]  -- (Note: Available in Hive 0.6.0 and later)
14   ]
15   [LOCATION hdfs_path]
16   [TBLPROPERTIES (property_name=property_value, ...)]   -- (Note: Available in Hive 0.6.0 and later)
17   [AS select_statement];   -- (Note: Available in Hive 0.5.0 and later; not supported for external tables)
18  
19 CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name
20   LIKE existing_table_or_view_name
21   [LOCATION hdfs_path];
22  
23 data_type
24   : primitive_type
25   | array_type
26   | map_type
27   | struct_type
28   | union_type  -- (Note: Available in Hive 0.7.0 and later)
29  
30 primitive_type
31   : TINYINT
32   | SMALLINT
33   | INT
34   | BIGINT
35   | BOOLEAN
36   | FLOAT
37   | DOUBLE
38   | DOUBLE PRECISION -- (Note: Available in Hive 2.2.0 and later)
39   | STRING
40   | BINARY      -- (Note: Available in Hive 0.8.0 and later)
41   | TIMESTAMP   -- (Note: Available in Hive 0.8.0 and later)
42   | DECIMAL     -- (Note: Available in Hive 0.11.0 and later)
43   | DECIMAL(precision, scale)  -- (Note: Available in Hive 0.13.0 and later)
44   | DATE        -- (Note: Available in Hive 0.12.0 and later)
45   | VARCHAR     -- (Note: Available in Hive 0.12.0 and later)
46   | CHAR        -- (Note: Available in Hive 0.13.0 and later)
47  
48 array_type
49   : ARRAY < data_type >
50  
51 map_type
52   : MAP < primitive_type, data_type >
53  
54 struct_type
55   : STRUCT < col_name : data_type [COMMENT col_comment], ...>
56  
57 union_type
58    : UNIONTYPE < data_type, data_type, ... >  -- (Note: Available in Hive 0.7.0 and later)
59  
60 row_format
61   : DELIMITED [FIELDS TERMINATED BY char [ESCAPED BY char]] [COLLECTION ITEMS TERMINATED BY char]
62         [MAP KEYS TERMINATED BY char] [LINES TERMINATED BY char]
63         [NULL DEFINED AS char]   -- (Note: Available in Hive 0.13 and later)
64   | SERDE serde_name [WITH SERDEPROPERTIES (property_name=property_value, property_name=property_value, ...)]
65  
66 file_format:
67   : SEQUENCEFILE
68   | TEXTFILE    -- (Default, depending on hive.default.fileformat configuration)
69   | RCFILE      -- (Note: Available in Hive 0.6.0 and later)
70   | ORC         -- (Note: Available in Hive 0.11.0 and later)
71   | PARQUET     -- (Note: Available in Hive 0.13.0 and later)
72   | AVRO        -- (Note: Available in Hive 0.14.0 and later)
73   | INPUTFORMAT input_format_classname OUTPUTFORMAT output_format_classname
74  
75 constraint_specification:
76   : [, PRIMARY KEY (col_name, ...) DISABLE NOVALIDATE ]
77     [, CONSTRAINT constraint_name FOREIGN KEY (col_name, ...) REFERENCES table_name(col_name, ...) DISABLE NOVALIDATE 
 1 //示例 外部分區表
 2  create external table if not exists testdb.test
 3   (id int COMMENT '這是主鍵',
 4  ad array<String>,
 5  bd map<string,String>,
 6  cd struct<a:String,b:string,c:string,d:String>)
 7  COMMENT '這是測試表' 
 8  partitioned by(dd String,time String) 
 9  row format delimited  
10  fields terminated by  ' ' 
11  collection items terminated by  ',' 
12  map keys terminated by  ':' 
13  lines terminated by '\n'
14  location '/use/';



 

說明:external 創建一張表不使用hive預設位置,可以指向hdfs任何位置

  partitioned 分區欄位

  fields terminated by 欄位分割方式

  collection items terminated by   array,map,struct特殊欄位中數據分割方式

  map keys terminated by  map中key:value的分割方式

  stored as textfile location 指定外部表數據的位置

還可以創建排序表,傾斜表,臨時表以及加約束條件

刪除表

1 //官方指導
2 DROP TABLE [IF EXISTS] table_name [PURGE];     -- (Note: PURGE available in Hive 0.14.0 and later)
1 //示例
2 drop table  testdb.test;

說明:PURGE 在配置了垃圾回收站的情況下,如果指定此參數,數據將會直接刪除。否則將移至垃圾回收目錄。

截斷表

1 //官方指導
2 TRUNCATE TABLE table_name [PARTITION partition_spec];
3  
4 partition_spec:
5   : (partition_column = partition_col_value, partition_column = partition_col_value, ...)
1 //示例
2 truncate table testdb.test partition(time=2017);

說明:刪除該分區中所有數據,可以同時刪除多個分區中的數據,分區依舊存在。

Alter Table/Partition/Column

重命名錶

1 //官方指導
2 ALTER TABLE table_name RENAME TO new_table_name;
1 //示例
2 alter table testdb.test rename to testone;

更改表屬性

 

1 //官方指導
2 ALTER TABLE table_name SET TBLPROPERTIES table_properties;
3  
4 table_properties:
5   : (property_name = property_value, property_name = property_value, ... )
1 //示例
2 alter table testdb.testone set tblproperties('propertyone'='第一個測試');

說明: 設置自己的元數據

添加serdo屬性

1 //官方指導
2 ALTER TABLE table_name [PARTITION partition_spec] SET SERDE serde_class_name [WITH SERDEPROPERTIES serde_properties];
3  
4 ALTER TABLE table_name [PARTITION partition_spec] SET SERDEPROPERTIES serde_properties;
5  
6 serde_properties:
7   : (property_name = property_value, property_name = property_value, ... )
1 //示例
2 alter table testdb.testone set serdeproperties('test'='test');

添加分區

1 //官方指導
2 ALTER TABLE table_name ADD [IF NOT EXISTS] PARTITION partition_spec [LOCATION 'location'][, PARTITION partition_spec [LOCATION 'location'], ...];
3  
4 partition_spec:
5   : (partition_column = partition_col_value, partition_column = partition_col_value, ...)
1 //示例 沒有示例 在整理時遇到錯誤
2  alter table testdb.test add partition (month='10') location '/root/a.txt';
3 報錯:
4 FAILED: ValidationFailureSemanticException Partition spec {month=10} contains non-partition columns

動態分區

1 //官方指導
2 FROM page_view_stg pvs
3 INSERT OVERWRITE TABLE page_view PARTITION(dt='2008-06-08', country)
4        SELECT pvs.viewTime, pvs.userid, pvs.page_url, pvs.referrer_url, null, null, pvs.ip, pvs.country
1 //示例
2 //修改配置文件hive-site 
3 //hive.exec.dynamic.partition=true;  
4 //hive.exec.dynamic.partition.mode=nonstrict; 
5 insert overwrite table test1  partition(dd,time) select id,ad,bd,cd,dd,time  from test;

重命名分區

1 //官方指導
2 ALTER TABLE table_name PARTITION partition_spec RENAME TO PARTITION partition_spec;
1 //示例
2 ALTER TABLE test PARTITION(time='2018') RENAME TO PARTITION(year='2018');
3 //異常
4 FAILED: ValidationFailureSemanticException Partition spec {year=2018} contains non-partition columns

刪除分區

//官方指導
ALTER TABLE table_name DROP [IF EXISTS] PARTITION partition_spec[, PARTITION partition_spec, ...]
  [IGNORE PROTECTION] [PURGE];            -- (Note: PURGE available in Hive 1.2.0 and later, IGNORE PROTECTION not available 2.0.0 and later)
1 //示例
2 alter table testdb.test drop  partition (dd = 'a');

修改分區或表文件格式

1 //官方指導
2 ALTER TABLE table_name [PARTITION partition_spec] SET FILEFORMAT file_format;
1 // 示例 一般都用text 
2 alter table test partition (dd='b') set fileformat rcfile;

改變列

更改列名/類型/位置/註釋

1 //官方指導
2 ALTER TABLE table_name [PARTITION partition_spec] CHANGE [COLUMN] col_old_name col_new_name column_type
3   [COMMENT col_comment] [FIRST|AFTER column_name] [CASCADE|RESTRICT];
//示例 id 改為id1 類型int 放在第1位 first
alter table test  change id  id1 int first;

添加或替換列

1 //官方指導
2 ALTER TABLE table_name 
3   [PARTITION partition_spec]                 -- (Note: Hive 0.14.0 and later)
4   ADD|REPLACE COLUMNS (col_name data_type [COMMENT col_comment], ...)
5   [CASCADE|RESTRICT]                         -- (Note: Hive 1.1.0 and later)
1 //示例
2 alter table test add columns(ed string);

 視圖、索引、許可權等DDL操作請參考apache Hive官方文檔


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • MySql技術內幕之MySQL入門(1) "MySql技術內幕之MySQL入門(1)" 檢查系統中是否已經安裝了MySQL 若沒有顯示已安裝結果,則沒有安裝。否則表示已經安裝。 安裝過程中會讓輸入密碼,記得把密碼記住。 登錄 本節SQL語句 MySql技術內幕之MySQL入門(2) "MySql技術 ...
  • SQL Server時間類型datetime 相容ADO的COleDateTime. SQL datetime 日期和時間數據,可表示1753.1.1 至 9999.12.31的時間,精度為1/300秒, 約0.33秒, 其在資料庫系統中的存儲為兩個4位元組的整形。 ...
  • 本文目錄:1.1 數據類型概覽1.2 存儲機制和操作方式 1.2.1 整型的存儲方式 1.2.2 字元類型的存儲方式 1.2.3 日期時間型的存儲方式 1.2.4 ENUM數據類型 1.2.5 SET數據類型1.3. 數據類型屬性:unsigned1.3. 數據類型屬性:zerofill 1.1 數 ...
  • ZooKeeper是什麼 ZooKeeper設計目的 ZooKeeper工作原理 Zookeeper的核心是原子廣播,這個機制保證了各個Server之間的同步。實現這個機制的協議叫做Zab協議(ZooKeeper Atomic Broadcast protocol)。Zab協議有兩種模式,它們分別是 ...
  • 1.學習Redis之前呢,首先需要安裝redis。 這裡使用的環境:VMware12,CentOS7 安裝對象:redis4.0.2 1.1 訪問redis.io網站查詢目前最新的redis發佈包,並copy資源地址(http://download.redis.io/releases/redis-4 ...
  • 一、在兩台Ubuntu機器上安裝mysql1.檢查系統中是否安裝了mysql 這個是已經安裝了的 沒有安裝的話執行上條命令 MySQL的一些簡單管理:啟動MySQL服務: sudo start mysql停止MySQL服務: sudo stop mysql修改 MySQL 的管理員密碼: sudo ...
  • 首先檢查系統裡面是否已經安裝了mysql在終端輸入 sudo netstat -tap | grep mysql 若沒有反應,沒有顯示已安裝結果,則說明沒有安裝; 如上則表示已經安裝; 安裝命令如上所示; MySQL的一些簡單管理;啟動mysql服務:sudo start mysql停止mysql服 ...
  • Linux環境: 壹、首先查看mysql的數據存放路徑:ps -ef|grep mysql 貳、進入上述查出的mysql數據存放路徑:cd var/lib/mysql (數據存放路徑) 叄、導出資料庫用mysqldump命令 1、導出數據和表結構: mysqldump -u 用戶名 -p 資料庫名 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...