4.2 Hive SQL
生活随笔
收集整理的這篇文章主要介紹了
4.2 Hive SQL
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Hive SQL - DDL
- 一、Hive SQL語言:DDL建庫、建表
- 1、 Hive SQL之數據庫與建庫
- SQL中DDL語法的作用
- Hive中DDL語法的使用
- 數據庫database
- create database
- use database
- drop database
- 2、Hive SQL之表與建表
- 表Table
- 建表語法樹(基礎)
- 注意事項
- (1)數據類型
- (2)分隔符指定語法
- Hive默認分隔符
- 練習一、數據類型、分隔符練習
- 練習二、默認分隔符使用
- 二、Hive Show語法
- 1、show語法功能
- 2、常用show語句
- 參考
一、Hive SQL語言:DDL建庫、建表
1、 Hive SQL之數據庫與建庫
Hive數據模型總覽
SQL中DDL語法的作用
- 數據定義語言 (Data Definition Language, DDL),是SQL語言集中對數據庫內部的對象結構進行創建,刪除,修改等的操作語言,這些數據庫對象包括database、table等。
- DDL核心語法由CREATE、ALTER與DROP三個所組成。DDL并不涉及表內部數據的操作。
Hive中DDL語法的使用
- Hive SQL(HQL)與標準SQL的語法大同小異,基本相通;
- 基于Hive的設計、使用特點,HQL中create語法(尤其create table)將是學習掌握Hive DDL語法的重中之重。
- 建表是否成功直接影響數據文件是否映射成功,進而影響后續是否可以基于SQL分析數據。通俗點說,沒有表,表沒有數據,你用Hive分析什么呢?
數據庫database
- 在Hive中,默認的數據庫叫做default,存儲數據位置位于HDFS的/user/hive/warehouse下。
- 用戶自己創建的數據庫存儲位置是/user/hive/warehouse/database_name.db下。
create database
- create database用于創建新的數據庫
COMMENT:數據庫的注釋說明語句
LOCATION:指定數據庫在HDFS存儲位置,默認/user/hive/warehouse/dbname.db
WITH DBPROPERTIES:用于指定一些數據庫的屬性配置
- 例子:創建數據庫itcast
注意:如果需要使用location指定路徑的時候,最好指向的是一個新創建的空文件夾。
use database
- 選擇特定的數據庫
切換當前會話使用哪一個數據庫進行操作
drop database
- 刪除數據庫
默認行為是RESTRICT,這意味著僅在數據庫為空時才刪除它。
要刪除帶有表的數據庫(不為空的數據庫),我們可以使用CASCADE。
2、Hive SQL之表與建表
Hive數據模型總覽
表Table
- 一個數據庫通常包含一個或多個表。每個表由一個名字標識(例如“客戶”或者“訂單”)。
- 表包含帶有數據的記錄(行)。
建表語法樹(基礎)
CREATE TABLE [IF NOT EXISTS] [db_name.]table_name (col_name data_type [COMMENT col_comment], ... ) [COMMENT table_comment] [ROW FORMAT DELIMITED …];注意事項
- 藍色字體是建表語法的關鍵字,用于指定某些功能。
- [ ]中括號的語法表示可選。
- 建表語句中的語法順序要和語法樹中順序保持一致。
- 最低限度必須包括的語法為:
(1)數據類型
- Hive數據類型指的是表中列的字段類型;
- 整體分為兩類:原生數據類型(primitive data type)和復雜數據類型(complex data type)。
- 最常用的數據類型是字符串String和數字類型Int。
(2)分隔符指定語法
- ROW FORMAT DELIMITED語法用于指定字段之間等相關的分隔符,這樣Hive才能正確的讀取解析數據。
- 或者說只有分隔符指定正確,解析數據成功,我們才能在表中看到數據
- LazySimpleSerDe是Hive默認的,包含4種子語法,分別用于指定字段之間、集合元素之間、map映射 kv之間、換行的分隔符號。
- 在建表的時候可以根據數據的特點靈活搭配使用。
Hive默認分隔符
- Hive建表時如果沒有row format語法指定分隔符,則采用默認分隔符;
- 默認的分割符是’\001’,是一種特殊的字符,使用的是ASCII編碼的值,鍵盤是打不出來的。
- 在vim編輯器中,連續按下Ctrl+v/Ctrl+a即可輸入’\001’ ,顯示^A
- 在一些文本編輯器中將以SOH的形式顯示:
練習一、數據類型、分隔符練習
文件archer.txt中記錄了手游《王者榮耀》射手的相關信息,包括生命、物防、物攻等屬性信息,其中
字段之間分隔符為制表符\t,要求在Hive中建表映射成功該文件。
(1/3)數據文件
- 字段含義:id、name(英雄名稱)、hp_max(最大生命)、mp_max(最大法力)、attack_max(最高物攻)、defense_max(最大物防)、attack_range(攻擊范圍)、role_main(主要定位)、role_assist(次要定位)。
- 分析一下:字段都是基本類型,字段的順序需要注意一下。
- 字段之間的分隔符是制表符,需要使用row format語法進行指定
(2/3)建表語句
(2/3)建表語句
- 建表成功之后,在Hive的默認存儲路徑下就生成了表對應的文件夾;
- 把archer.txt文件上傳到對應的表文件夾下。
(3/3)結果驗證
- 執行查詢操作,可以看出數據已經映射成功。
- 核心語法:row format delimited fields terminated by 指定字段之間的分隔符。
練習二、默認分隔符使用
文件team_ace_player.txt中記錄了手游《王者榮耀》主要戰隊內最受歡迎的王牌選手信息,字段之間
使用的是\001作為分隔符,要求在Hive中建表映射成功該文件。
(1/3)數據文件
- 字段:id、team_name(戰隊名稱)、ace_player_name(王牌選手名字)
- 分析一下:數據都是原生數據類型,且字段之間分隔符是\001,因此在建表的時候可以省去row format語句,因為hive默認的分隔符就是\001。
(2/3)建表語句
- 表成功后,把team_ace_player.txt文件上傳到對應的表文件夾下。
(3/3)結果驗證
- 執行查詢操作,可以看出數據已經映射成功。
- 想一想:字段以\001分隔建表時很方便,那么采集、清洗數據時對數據格式追求有什么啟發?你青睞于什么分隔符?
二、Hive Show語法
1、show語法功能
- Show相關的語句可以幫助用戶查詢相關信息。
- 比如我們最常使用的查詢當前數據庫下有哪些表 show tables.
2、常用show語句
--1、顯示所有數據庫 SCHEMAS和DATABASES的用法 功能一樣 show databases; show schemas; --2、顯示當前數據庫所有表 show tables; SHOW TABLES [IN database_name]; --指定某個數據庫 --3、查詢顯示一張表的元數據信息 desc formatted t_team_ace_player;參考
資料來源于《黑馬程序員-大數據Hadoop入門》
總結
以上是生活随笔為你收集整理的4.2 Hive SQL的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 瞩目视频通信云 免费的远程视频会议,
- 下一篇: 【论文精读】Deep Defocus M