熱線電話:13121318867

登錄
首頁精彩閱讀Hadoop+Hive常用知識總結
Hadoop+Hive常用知識總結
2017-05-24
收藏

Hadoop+Hive常用知識總結

1、什么是Hadoop?什么是hive?

Hadoop:一個分布式系統基礎架構,由Apache基金會開發,用戶可以在不了解分布式底層細節的情況下,開發分布式程序,充分利用集群的威力告訴運算和存儲。

Hadoop是項目的總稱,主要是由分布式存儲HDFS)、分布式運算(MapReduce)組成。

HIVE是一個SQL解析引擎,它將SQL語句轉譯成M/RJOB 然后再Hadoop執行,與傳統數據庫完全不同,只是采用了同樣的sql界面。

2、hadoop基本操作

2.1 查看指定目錄下內容

Hadoop dfs –ls[文件目錄]

如:hadoop dfs –ls /user/war/wangkai.pt

2.2 打開某個已存在的文件

Hadoop dfs –cat [file_path]

如:hadoop dfs –cat /user/war/wangkai.pt/test.txt
2.3 刪除某個文件

hadoop fs -rm hdfs://ns4/user/mart_vdp/app.db/app_vdp_jdb_jw_store_task_rules/store_task.txt

2.4 將本地文件存儲至hadoop

Hadoop fs –put [本地地址]

3、hive基本操作

3.1 進入hive

登陸hadoop服務器后,輸入 hive(這處理的有點慢,多等會)

顯示成hive>

>

后,即表示進入到hive中

3.2  hive基本操作

3.2.1 建表

語句:

CREATE [EXTERNAL] TABLE table_name

(col_name data_rype,.....)

[PATTITIONED BY  (col_name data_type)]

[ROW FORMAT DELIMITED            

[FIELDS TERMINATED BY '/t' ]      

[STORED AS TEXTFILE]

舉例:

create table input_data_test  #表名

(                 item_sku_id                      string   , #字段名稱 字段類型

provider_code                   string   ,

delivery_center                 string  ,

stock                           bigint             )            

COMMETN '注釋:XXXXX'       #表注釋

PARTITIONED BY ("ACTIVE")  #分區表字段(如果文件非常大的話,采用分區表可以快速過濾出按分區字段劃分的數字)    

ROW FORMAT DELIMITED

FIELDS TERMINATED BY '/t'    #字段之間是按照什么分割開的,這個例子是中按照tab鍵分開,還可以使用其他字符,如|分開 

STORED AS TEXTFILE;   #用哪種方式存儲數據

3.2.2 查看庫

語句:show  databases;

使用某一個庫:use database;

3.2.3 查看表

語句:show tables   

可以使用模糊查詢:show tables '*TMP*'

查看表有哪些分區: show partitions  table;

使用某一個表:use  table;

查看表字段:desc  table;  

3.2.4刪除表

Drop table table_name;

3.2.5增加字段

alter table fdm_cep_ql_service_center_chain add columns (jd_account string);

3.2.6 導入數據

使用load命令將數據導入表中  load操作只是將數據復制/移動至Hive表對應的位置,不會對數據進行任何轉換。

語句:

load  data [local] inpath 'filepath' [overwrite] into table tablename [partition ]

舉例:

load data local inpath '/python/app/task/data/gdm_m03_item_sku_da_06.txt' into  table gdm.gdm_m03_item_sku_da;(不帶分區)

load data local inpath '/python/app/task/data/no_commission_rules.txt' into table app.app_vdp_nojdb_jw_sku_commission_rules;(帶分區)

注:就是普通的insert,只不過數據來源是通過inpath路徑找到的,insert之前保證表已建完,并且格式于建表語句要求的格式一致(換行、分隔符等)

3.2.7 查詢

1、where 語句

Where語句是個布爾表達式,例如:下面的查詢語句只返回銷售記錄大于10,且歸屬地屬于美國的銷售代表。

Select * from sales where amount >10 and region =’US’

注:hive不支持where子句中的IN、EXIST或子查詢。

2、基于partition的查詢

一般select查詢會掃描整個表(除非是為了抽樣查詢)。但是如果一個表使用partitioned by子句建表,查詢就可以利用分區剪枝(input pruning)的特性,只掃描一個表中他關心的那一部分。

Hive當前的是實現是。只有分區斷言出現在離from子句最近的那個where子句中,才會取用分區剪枝。

例如,如果表app_vdp_base_jdbang_income_ma_sum使用date列分區,一下語句只會讀取分區為‘2016-06-01’的數據。

Select *

from app_vdp_base_jdbang_income_ma_sum

where tx_dt>=’2016-06-01’ and tx_dt <=’2016-06-31’

3、limit查詢

Limit可以限制查詢的記錄數,查詢的結果是隨機選擇的。下邊的查詢語句從t1表中隨機查詢5條記錄:

Select * from t1 limit 5;

如果需要查詢top多少的數據,則需要使用下面的語句:

查詢銷售記錄最大的5個銷售代表:

Select * from sales order by amount desc limit 5;

3.2.8  修改數據

Hive不支持update數據。

同時,hive導入數據的時候不會自動去重。

3.2.9 刪除數據

Hive不支持條件刪除,只能刪除整個表后再重新建。

3.2.10 結果導出

在hive中查詢出表數據后,如果數據太多,不好看,可以將數據導出來,然后在本地使用UE等工具查看。此命令在在linux下執行

格式:hive –e  ‘查詢語句’ > 文件名.txt   #將查詢語句查詢出來的結果導出到txt中

例如:

hive - e 'select * from app.app_vdp_jdbang_jwang_xiadan_detail;' > wangsha1.txt


數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢