99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

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

Hadoop+Hive常用知識總結(jié)

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

Hadoop:一個分布式系統(tǒng)基礎(chǔ)架構(gòu),由Apache基金會開發(fā),用戶可以在不了解分布式底層細節(jié)的情況下,開發(fā)分布式程序,充分利用集群的威力告訴運算和存儲。

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

HIVE是一個SQL解析引擎,它將SQL語句轉(zhuǎn)譯成M/RJOB 然后再Hadoop執(zhí)行,與傳統(tǒng)數(shù)據(jù)庫完全不同,只是采用了同樣的sql界面。

2、hadoop基本操作

2.1 查看指定目錄下內(nèi)容

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服務(wù)器后,輸入 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")  #分區(qū)表字段(如果文件非常大的話,采用分區(qū)表可以快速過濾出按分區(qū)字段劃分的數(shù)字)    

ROW FORMAT DELIMITED

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

STORED AS TEXTFILE;   #用哪種方式存儲數(shù)據(jù)

3.2.2 查看庫

語句:show  databases;

使用某一個庫:use database;

3.2.3 查看表

語句:show tables   

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

查看表有哪些分區(qū): 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 導(dǎo)入數(shù)據(jù)

使用load命令將數(shù)據(jù)導(dǎo)入表中  load操作只是將數(shù)據(jù)復(fù)制/移動至Hive表對應(yīng)的位置,不會對數(shù)據(jù)進行任何轉(zhuǎn)換。

語句:

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;(不帶分區(qū))

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

注:就是普通的insert,只不過數(shù)據(jù)來源是通過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子句建表,查詢就可以利用分區(qū)剪枝(input pruning)的特性,只掃描一個表中他關(guān)心的那一部分。

Hive當(dāng)前的是實現(xiàn)是。只有分區(qū)斷言出現(xiàn)在離from子句最近的那個where子句中,才會取用分區(qū)剪枝。

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

Select *

from app_vdp_base_jdbang_income_ma_sum

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

3、limit查詢

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

Select * from t1 limit 5;

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

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

Select * from sales order by amount desc limit 5;

3.2.8  修改數(shù)據(jù)

Hive不支持update數(shù)據(jù)。

同時,hive導(dǎo)入數(shù)據(jù)的時候不會自動去重。

3.2.9 刪除數(shù)據(jù)

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

3.2.10 結(jié)果導(dǎo)出

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

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

例如:

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


數(shù)據(jù)分析咨詢請掃描二維碼

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

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務(wù)器是否宕機 new_captcha: data.new_captcha, // 用于宕機時表示是新驗證碼的宕機 product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }