1. 程式人生 > >hive sql select語句總結

hive sql select語句總結

    Hive 是基於Hadoop 構建的一套資料倉庫分析系統,它提供了豐富的SQL查詢方式來分析儲存在Hadoop 分散式檔案系統中的資料,可以將結構化的資料檔案對映為一張資料庫表,並提供完整的SQL查詢功能,可以將SQL語句轉換為MapReduce任務進行執行,通過自己的SQL 去查詢分析需要的內容,這套SQL 簡稱Hive SQL,使不熟悉mapreduce 的使用者很方便的利用SQL 語言查詢,彙總,分析資料。而mapreduce開發人員可以把己寫的mapper 和reducer 作為外掛來支援Hive 做更復雜的資料分析。

    它與關係型資料庫的SQL 略有不同,但支援了絕大多數的語句如DDL、DML 以及常見的聚合函式、連線查詢、條件查詢。HIVE不適合用於聯機,也不提供實時查詢功能。它最適合應用在基於大量不可變資料的批處理作業。

HIVE的特點:可伸縮(在Hadoop的叢集上動態的新增裝置),可擴充套件,容錯,輸入格式的鬆散耦合。

基本的Select 操作:

1. SELECT [ALL | DISTINCT] select_expr, select_expr, ...

2. FROM table_reference

3. [WHERE where_condition]

4. [GROUP BY col_list [HAVING condition]]

5. [ CLUSTER BY col_list

6. | [DISTRIBUTE BY col_list] [SORT BY| ORDER BY col_list]

7. ]

8. [LIMIT number]

使用ALL和DISTINCT選項區分對重複記錄的處理。預設是ALL,表示查詢所有記錄。DISTINCT表示去掉重複的記錄。

  •  Where 條件,類似我們傳統SQL的where 條件,目前支援 AND,OR ,0.9版本支援between
  • IN, NOT IN
  • 不支援EXIST ,NOT EXIST
  • ORDER BY與SORT BY的不同:ORDER BY 全域性排序,只有一個Reduce任務;SORT BY 只在本機做排序
  • Limit:Limit 可以限制查詢的記錄數

注:SELECT 語句可以使用正則表示式做列選擇

SQL到HiveQL應轉變的習慣

1、Hive不支援等值連線

SQL中對兩表內聯可以寫成:

select * from dual a,dual b where a.key = b.key;

Hive中應為

select * from dual a join dual b on a.key = b.key;

而不是傳統的格式:

SELECT t1.a1 as c1, t2.b1 as c2FROM t1, t2

WHERE t1.a2 = t2.b2

2、分號字元

分號是SQL語句結束標記,在HiveQL中也是,但是在HiveQL中,對分號的識別沒有那麼智慧,例如:

select concat(key,concat(';',key)) from dual;

但HiveQL在解析語句時提示:

FAILED: Parse Error: line 0:-1 mismatched input '<EOF>' expecting ) in function specification

解決的辦法是,使用分號的八進位制的ASCII碼進行轉義,那麼上述語句應寫成:

select concat(key,concat('\073',key)) from dual;

3、IS [NOT] NULL

SQL中null代表空值, 值得警惕的是, 在HiveQL中String型別的欄位若是空(empty)字串, 即長度為0, 那麼對它進行IS NULL的判斷結果是False.

4、Hive不支援將資料插入現有的表或分割槽中,僅支援覆蓋重寫整個表,示例如下:

INSERT OVERWRITE TABLE t1

SELECT * FROM t2;

5、Hive 的巢狀查詢再必須給表起別名

如:select a.column

    from (select    *

        from 表1

        where dt = 20180528

        ) a           

group by   a.dt limit 100

6、當有兩個分割槽時,在使用where語句查詢的時候,必須將兩個分割槽都寫出來,如:

若表的分割槽有兩個dt日期和hr小時,我們想選擇20180608這一個分割槽的資料,則選擇條件為where dt = 20180608 and hr>=0

相關推薦

hive sql select語句總結

    Hive 是基於Hadoop 構建的一套資料倉庫分析系統,它提供了豐富的SQL查詢方式來分析儲存在Hadoop 分散式檔案系統中的資料,可以將結構化的資料檔案對映為一張資料庫表,並提供完整的SQL查詢功能,可以將SQL語句轉換為MapReduce任務進行執行,通過自己

[1]SQL SELECT 語句

-- col spa load ogl code facebook 結果 sel SQL SELECT 語句 "Websites" 表的數據: +----+--------------+---------------------------+-------+-------

SQL 查詢語句總結

SQL 查詢語句總結 1. 列名 Select Sname AS 姓名 from Student; ·這裡AS可以省略。   2. 去重:distinct Select distinctSno from sc;   3.  WHERE條件

Oracle OCP 官方PPT學習日誌 使用 SQL SELECT 語句檢索資料 01

連線運算子,|| 注:也可以將日期表示式連線到其他表示式或列。 文字字串 SELECT last_name ||' is a '||job_id AS "Employee Details" FROM employees; &nbs

Oracle OCP 官方PPT學習日誌 使用 SQL SELECT 語句檢索數據 01

bubuko 示例 檢索 size 方括號 ora clas sel 但是 連接運算符,|| 註:也可以將日期表達式連接到其他表達式或列。 文字字符串 SELECT last_name ||‘ is a ‘||job_id AS "Employ

SQL select語句複習

內連線 概念 內連線,也被稱為自然連線,只有兩個表相匹配的行才能在結果集中出現。返回的結果集選取了兩個表中所有相匹配的資料,捨棄了不匹配的資料。可以理解為取兩個表的交集 # 語法 select fieldlist from table1 [inner] join table2 on table1.

oracle資料庫常用的sql語法語句總結

Structured Query Language 結構話查詢語言 建立表的寫法 1.1 列表內容 create table Table ( t1 varchar2(20) not null,

優化 SQL SELECT 語句效能的 6 個簡單技巧

SELECT語句的效能調優有時是一個非常耗時的任務,在我看來它遵循帕累託原則。20%的努力很可能會給你帶來80%的效能提升,而為了獲得另外20%的效能提升你可能需要花費80%的時間。除非你在金星工作,那裡的每一天都等於地球上的243天,否則交付期限很有可能使你沒有足夠的

Sql常用語句總結

Sql對大小寫不敏感,分為資料操作語言(DML)和資料定義語言(DDL); Sql 使用單引號來環繞 文字值(大部分資料庫系統也接受雙引號)。如果是 數值,請不要使用引號   SELECT - 從資

Teradata sql 常用語句總結

1.建立一個和表 pnr_1 結構一樣的表 Create table pnr_2 as pnr_1 with no data  不含資料 Create table pnr_2 as pnr_1 with  data  含資料 2.NULLIF(exp1,exp2) 當

Access SQL Select語句、子查詢結果之間的連線(JION)

最近專案需要用到SQL語句,讓剛入手的我著實頭疼,現在想把自己的一些理解分享一下,權當記錄。 第一部分:對於Select查詢語句理解 最基本的查詢語句: Select 列名 (最終查詢結果,你希望出現的列名) From 表名 (你想要從哪裡找尋資料) Where 查

Hive 操作資料庫語句總結

轉載地址:http://blog.csdn.net/xiaoshunzi111/article/details/48727831 1、建立一個表,欄位之間用 \t 分隔;        Hive>create  table  student (id 

SQL中的SELECT 簡單查詢語句總結

clas 識別 結果集 -i ear get int 一個 lec --scott用戶不能使用,使用system登錄--修改用戶scott賬戶解鎖ALTER USER SCOTT ACCOUNT UNLOCK;--重新設置密碼identified被識別的alter user

Oracle SQLselect各類查詢語句總結

SQL查詢語句總結 資料查詢語言:即DML(Data Mannipulation Language)資料操縱語言,用於查詢、操縱資料表資料行 本手冊所有示例引用表均以TIPTOP GP  ERP資料庫表為基礎演示, 1、SELECT 查詢所有列資料或特定列資料 --查

[常用的Sql語句總結]

無需 表名 全部 表示 操作 數據庫 let 數據添加 run 1. 創建數據庫DataBase create database 數據庫名稱; 2. 刪除數據庫DataBase drop database 數據庫名稱 drop database 數據庫名稱1,數據庫名

sql語句總結

初始化 課程表 let core 顯示 ble student 練習 教師 create table student(sno varchar2(10) primary key,sname varchar2(20),sage number(2),ssex varchar2

基本SQLSELECT語句

alt rom 分行 sql 技術分享 .cn src blog 也不能 SQL 語言大小寫不敏感。 SQL 可以寫在一行或者多行 關鍵字不能被縮寫也不能分行 各子句一般要分行寫。 使用縮進提高語句的可讀性。 select語句 例如表:SCOTT.EMP select *

經典sql 語句總結,轉載於http://www.iteye.com/topic/1117462

agent 作業 方案 插入 delet 連接參數 將不 彈出 mic 一、基礎1、說明:創建數據庫CREATE DATABASE database-name 2、說明:刪除數據庫drop database dbname3、說明:備份sql server--- 創建 備份數

[22]SQL INSERT INTO SELECT 語句

lex weibo face weight font website .com 存在 taobao [22]SQL INSERT INTO SELECT 語句 INSERT INTO SELECT 語句從一個表復制數據,然後把數據插入到一個已存在的表中。目標表中任何已存在的

常用的sql語句總結

sql語句常用的sql語句總結 insert常用的語句 insert 語法 insert into <表名> ( <字段名1>,..,<字段名n > ) values ( 值1 ), ……,( 值n ); --註意: 1、後面的值1對應的是字段名1的值,依此類推。 2、沒有