Hive的HQL(2)
生活随笔
收集整理的這篇文章主要介紹了
Hive的HQL(2)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Hive基礎(1)
Hive的HQL(2)
1. HQL的數據定義,HQL是一種SQL方言,支持絕大部分SQL-92標準。但是和SQL的差異為:不支持行級別的操作,不支持事務等。HQL的語法接近于MySQL。
2. Hive的數據庫,本質僅僅是個表的目錄或者命名空間。一般用數據庫將生產表組織成邏輯組。
3. Hive中的表–管理表,創建表時未指定的話為默認為管理表。當刪除管理表時,Hive將刪除管理表中的數據和元數據。
CREATE TABLE IF NOT EXISTS test.student ( name STRING COMMENT 'student name', age INT COMMENT 'student age', cource ARRAY<STRING>, body MAP<STRING,FLOAT>, address STRUCT<STRING,CITY:STRING,STATE:STRING>) COMMENT 'the info of student' ROW FORMAT DELIMITED FIELDS TERMINATED BY '\001' COLLECTION ITEMS TERMINATED BY '\002' MAP KEYS TEMINATED BY '\003' LINES TERMINATED BY '\n' STORED AS TEXTFILE LOCATION '/user/hive/warehouse/test.db/student';- COMMENT注釋作用
- ROW FORMAT DELIMITED等指定數據格式和文件存儲格式。
- LOCATION子句指定該表的存儲位置,若不寫存儲在Hive默認的數據倉庫目錄中。
4. Hive中的表–外部表,當數據需要被多個工具(如Pig、Hive)共享時,創建一個外部表明確數據的所有權,Hive只會刪除該表的元數據信息,而不會刪除該表的數據。
CREATE EXTERNAL TABLE IF NOT EXISTS test.student( name STRING COMMENT, age INT COMMENT, cource ARRAY<STRING>, body MAP<STRING,FLOAT>, address STRUCT<STREET:STRING,CITY:STRING,STATE:STRING>) LOCATION '/user/test/x'- EXTERNAL TABLE 創建一個外部表
5. Hive中的表–分區表(partition),分區表可以進行水平切分,將表數據按照某種規則進行存儲。
CREATE TABLE student_info( student_ID STRING, name STRING, age INT, sex STRING, father_name STRING, mother_name STRING) PARTITIONED BY (province STRING,city STRING);- PARTITIONED BY 子句指定表按照學生家庭住址的city和province字段進行分區。
- /user/hive/warehouse/student_info/province=hebei/city=handan
- 分區的作用相當和索引類似。
- Hive安全措施,設置“strict”模式,這樣如果針對一個分區表的查詢沒有對分區進行限制的話,改作業將會被禁止提交。
- 單獨為外部表的分區指定值和存儲位置
- 外部分區表被刪除,數據不會被刪除。
6. 刪除表 DROP TABLE test 或者 DROP TABLE IF EXISTS test
7. 修改表
- 表重命名 ALTER TABLE test RENAME TO test2
- 增加、修改、刪除分區
- 增加分區 ALTER TABLE test ADD PARTITION (x = x1, y = y2) LOCATION ‘/user/test/x1/y1’
- 修改分區 ALTER TABLE test ADD PARTITION (x = x1, y = y2) SET LOCATION ‘/user/test/x1/y1’
- 刪除分區 ALTER TABLE test ADD DROP PARTITION (x = x1, y = y2)
- 修改列信息
ALTER TABLE test
CHANGE COLUMN id uid INT
COMMENT ‘the unique id’
AFTER name; - 增加列
ALTER TABLE test ADD COLUMNS (new_col INT, new_col2 STRING); - 刪除或者替換列
ALTER TABLE test REPLACE COLUMNS (new_col INT, new col2 STRING);
8. HQL的數據操作 LOAD DATA
轉載于:https://www.cnblogs.com/lanzhi/p/6467709.html
總結
以上是生活随笔為你收集整理的Hive的HQL(2)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c编程:输入一个数字n,则n代表n行,每
- 下一篇: Java数据结构与排序算法——堆和堆排序