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

熱線電話:13121318867

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

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

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

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

Hadoop是項(xiàng)目的總稱(chēng),主要是由分布式存儲(chǔ)HDFS)、分布式運(yùn)算(MapReduce)組成。

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

2、hadoop基本操作

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

Hadoop dfs –ls[文件目錄](méi)

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

2.2 打開(kāi)某個(gè)已存在的文件

Hadoop dfs –cat [file_path]

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

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

2.4 將本地文件存儲(chǔ)至hadoop

Hadoop fs –put [本地地址]

3、hive基本操作

3.1 進(jìn)入hive

登陸hadoop服務(wù)器后,輸入 hive(這處理的有點(diǎn)慢,多等會(huì))

顯示成hive>

>

后,即表示進(jìn)入到hive中

3.2  hive基本操作

3.2.1 建表

語(yǔ)句:

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   , #字段名稱(chēng) 字段類(lèi)型

provider_code                   string   ,

delivery_center                 string  ,

stock                           bigint             )            

COMMETN '注釋?zhuān)篨XXXX'       #表注釋

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

ROW FORMAT DELIMITED

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

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

3.2.2 查看庫(kù)

語(yǔ)句:show  databases;

使用某一個(gè)庫(kù):use database;

3.2.3 查看表

語(yǔ)句:show tables   

可以使用模糊查詢(xún):show tables '*TMP*'

查看表有哪些分區(qū): show partitions  table;

使用某一個(gè)表: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ù)制/移動(dòng)至Hive表對(duì)應(yīng)的位置,不會(huì)對(duì)數(shù)據(jù)進(jìn)行任何轉(zhuǎn)換。

語(yǔ)句:

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,只不過(guò)數(shù)據(jù)來(lái)源是通過(guò)inpath路徑找到的,insert之前保證表已建完,并且格式于建表語(yǔ)句要求的格式一致(換行、分隔符等)

3.2.7 查詢(xún)

1、where 語(yǔ)句

Where語(yǔ)句是個(gè)布爾表達(dá)式,例如:下面的查詢(xún)語(yǔ)句只返回銷(xiāo)售記錄大于10,且歸屬地屬于美國(guó)的銷(xiāo)售代表。

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

注:hive不支持where子句中的IN、EXIST或子查詢(xún)。

2、基于partition的查詢(xún)

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

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

例如,如果表app_vdp_base_jdbang_income_ma_sum使用date列分區(qū),一下語(yǔ)句只會(huì)讀取分區(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查詢(xún)

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

Select * from t1 limit 5;

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

查詢(xún)銷(xiāo)售記錄最大的5個(gè)銷(xiāo)售代表:

Select * from sales order by amount desc limit 5;

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

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

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

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

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

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

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

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

例如:

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


數(shù)據(jù)分析咨詢(xún)請(qǐng)掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

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

OK
客服在線
立即咨詢(xún)
客服在線
立即咨詢(xún)
') } 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(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶(hù)后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說(shuō)明請(qǐng)參見(jiàn):http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".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 = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+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); }