hadoop學習筆記--12.hive DML操作

一、hive DML的基本操作


建議直接參考官方文檔:
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL
1.加載與插入數據

LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]
INSERT INTO TABLE tablename [PARTITION (partcol1[=val1], partcol2[=val2] ...)] VALUES values_row [, values_row ...]

Where values_row is:
( value [, value ...] )


常見的有以下幾個方式:
  1) 加載本地文件到hive表(LOCAL)
    例:load DATA LOCAL INPATH‘/data/user.txt’ INTO table user partition (month =’201707’ ,day=’13’);
  2) 加載hdfs文件到hive中
   例:load DATA INPATH‘/data/user.txt’INTO table user   partition (month =’201707’ ,day=’13’);
  3) 加載數據覆蓋表中已有的數據
   例:load data inpath ‘/user/liu/hive/datas/emp.txt’ overwrite into table emp ;
  4) 創建表是通過insert加載別的表已有的數據
    create table emp_ci like emp ;
    insert into table emp_ci select * from emp ;
  5) 創建表的時候通過location指定加載
  6) Import
    create table db_hive.emp like default.emp ;
    import table db_hive.emp from ‘/user/beifeng/hive/export/emp_exp’;
    

2.導出數據
  1. insert [overwrite] [local] directory ‘導出的文件地址’ select * from table_name;
  2. 指定導出的行列格式。
    insert [overwrite] [local] directory ‘文件地址’
ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘\t’ COLLECTION ITEMS TERMINATED BY ‘\n’ select * from table_name ;
  3. 查詢結果重定向。
    bin/hive -e “select * from emp ;” > /opt/datas/exp_res.txt
  4. export。
    EXPORT TABLE default.emp TO ‘/user/beifeng/hive/export/emp_exp’ ;(HDFS上的目錄)
  5. sqoop。


3.刪除數據

DELETE FROM tablename [WHERE expression]


4.更新數據

UPDATE tablename SET column = value [, column = value ...] [WHERE expression]


注:hive主要是分析數據的,所以一般不會對數據進行刪除或更新。

二、hive 查詢


1.hive的分組
  group by
    對查詢的數據根據表的某列進行分組。可以配合having一起使用。
     官方參考文檔:
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+GroupBy
    特別注意:select要選擇的字段必須爲聚合函數或者在group by後面出現過。
  
2.hive的排序方式
  order by :對全局數據的一個排序,僅僅只有1個reduce
  sort by :對每一個reduce內部數據進行排序的,全局結果集來說不是排序
  distribute by:類似於MapReduce中分區partition,對數據進行分區,結合sort by進行使用使reduce負載均衡。
    注意:distribute by 必須要在sort by 前面。
   cluster by :當distribute by和sort by 字段相同時,可以使用cluster by ;
  官方參考文檔:
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+SortBy

3.hive的Distinct

這裏寫圖片描述

4.hive的聚合函數
  Hive內部提供了很多函數給開發者使用,包括數學函數,類型轉換函數,條件函數,字符函數,聚合函數,表生成函數等等,這些函數都統稱爲內置函數。
參考本文:http://www.cnblogs.com/MOBIN/p/5618747.html
本文將函數所有的聚合函數都一一說明了。

5.join
  hive連接有很多種形式。分爲內連接,左外連接,右外連接,全外連接和半連接。通常會在兩個表進行聯合分析使用。
本文在這不多做介紹,其實這幾種連接方式不同體現在以哪張表爲主表而已。舉個例子,當A學生表與B課程表聯合分析時,A和B都有一列是學生的學號ID。假設A表在前以左外連接的方式聯合B表,則返回結果的表以A表爲主,A表的關聯不上的數據則返回NULL。
可以參考:http://lxw1234.com/archives/2015/06/315.htm

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章