Kettle Table Exists控件優(yōu)化

一、背景

? ? 本文是kettle優(yōu)化的系列文章中的其中一篇。最近在分析一些跑的比較慢的Job,發(fā)現(xiàn)一個(gè)很詭異的現(xiàn)象:同一個(gè)Table Exists控件侍筛,有的跑的很快、有的很慢撒穷,最慢的甚至30分鐘左右匣椰。經(jīng)過(guò)進(jìn)一步分析,了解到在判斷hive數(shù)據(jù)庫(kù)時(shí)端礼,當(dāng)表的數(shù)據(jù)量很大或視圖的查詢邏輯非常復(fù)雜禽笑,控件調(diào)用就會(huì)變得非常耗時(shí)。

? ?初步想法是控件在運(yùn)行時(shí)蛤奥,可能是數(shù)據(jù)庫(kù)連接或查詢數(shù)據(jù)的TEST SQL有問(wèn)題佳镜,導(dǎo)致對(duì)大量數(shù)據(jù)表的判斷沒(méi)有進(jìn)行優(yōu)化。為了驗(yàn)證這一想法并進(jìn)行徹底的優(yōu)化凡桥,只能通過(guò)看源代碼實(shí)現(xiàn)方式蟀伸。

二、準(zhǔn)備工作

? ? 1缅刽、下載Kettle源碼

? 從githup上下載kettle代碼并checkout到和自己kettle版本對(duì)應(yīng)的分支上:

? git clone git@github.com:pentaho/pentaho-kettle.git

? git checkout 6.1.0.1-R

????2啊掏、下載big-data-plugin源碼,big-data-plugin是kettle大數(shù)據(jù)相關(guān)的組件 ????

? ?git clone git@github.com:pentaho/big-data-plugin.git

? ?git checkout 6.1.0.1-R

3拷恨、前兩步下載的項(xiàng)目導(dǎo)入到Eclipse

三脖律、代碼分析

? ? Table Exists控件的實(shí)現(xiàn)類是 pentaho-kettle項(xiàng)目中的JobEntryTableExists谢肾,運(yùn)行時(shí)執(zhí)行execute方法腕侄,該方法首先獲得Database對(duì)象、數(shù)據(jù)庫(kù)連接芦疏,然后調(diào)用Database的checkTableExists方法冕杠,該方法就是用來(lái)判斷數(shù)據(jù)庫(kù)中是否存在指定的表。

? ? checkTableExists根據(jù)實(shí)際的數(shù)據(jù)庫(kù)實(shí)例酸茴,設(shè)置特定數(shù)據(jù)庫(kù)的SQL分预,然后執(zhí)行該sql,基于執(zhí)行結(jié)果判斷表是否存在薪捍,如果表不存在會(huì)異常笼痹。

????Mysql執(zhí)行的sql:

Oracle執(zhí)行的sql:

可以看到不同的數(shù)據(jù)庫(kù)配喳,查詢sql是不一樣的,這就可以根據(jù)數(shù)據(jù)庫(kù)的特點(diǎn)凳干,以最快的效率返回查詢結(jié)果晴裹。

????Hive使用的是默認(rèn)的Sql:

hive中執(zhí)行上面的查詢sql時(shí),如果表或視圖的數(shù)據(jù)量比較大救赐,就會(huì)起MR任務(wù)涧团,啟動(dòng)和銷毀MR任務(wù)都會(huì)浪費(fèi)時(shí)間,這就導(dǎo)致了查詢比較慢经磅。

四泌绣、代碼優(yōu)化

? ? 經(jīng)過(guò)上面的分析,已經(jīng)能定位到問(wèn)題预厌,解決方案也很簡(jiǎn)單阿迈,針對(duì)hive數(shù)據(jù)庫(kù)實(shí)現(xiàn)特定的getSQLTableExists方法,最大化利用hive特性轧叽、以最優(yōu)方式查詢數(shù)據(jù)仿滔。

? ? 在pentaho-big-data-legacy項(xiàng)目的Hive2DatabaseMeta類增加以下代碼:

編譯big-data-plugin項(xiàng)目下的legacy模塊,編譯后的jar包放到$KETTLE_HOME/plugins/pentaho-big-data-plugin目錄下

五犹芹、總結(jié)

? ? 遇到問(wèn)題首先要分析詳細(xì)的Log崎页,找到問(wèn)題,根據(jù)以往經(jīng)驗(yàn)了解大致原因腰埂,然后為了進(jìn)一步找到問(wèn)題根源飒焦,最好仔細(xì)看源代碼、然后優(yōu)化

本文首發(fā)于公眾號(hào):data之道

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末屿笼,一起剝皮案震驚了整個(gè)濱河市牺荠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌驴一,老刑警劉巖休雌,帶你破解...
    沈念sama閱讀 219,366評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異肝断,居然都是意外死亡杈曲,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門胸懈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)担扑,“玉大人,你說(shuō)我怎么就攤上這事趣钱∮肯祝” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 165,689評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵首有,是天一觀的道長(zhǎng)燕垃。 經(jīng)常有香客問(wèn)我枢劝,道長(zhǎng),這世上最難降的妖魔是什么卜壕? 我笑而不...
    開(kāi)封第一講書人閱讀 58,925評(píng)論 1 295
  • 正文 為了忘掉前任呈野,我火速辦了婚禮,結(jié)果婚禮上印叁,老公的妹妹穿的比我還像新娘被冒。我一直安慰自己,他們只是感情好轮蜕,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布昨悼。 她就那樣靜靜地躺著,像睡著了一般跃洛。 火紅的嫁衣襯著肌膚如雪率触。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,727評(píng)論 1 305
  • 那天汇竭,我揣著相機(jī)與錄音葱蝗,去河邊找鬼。 笑死细燎,一個(gè)胖子當(dāng)著我的面吹牛两曼,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播玻驻,決...
    沈念sama閱讀 40,447評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼悼凑,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了璧瞬?” 一聲冷哼從身側(cè)響起户辫,我...
    開(kāi)封第一講書人閱讀 39,349評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎嗤锉,沒(méi)想到半個(gè)月后渔欢,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,820評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡瘟忱,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評(píng)論 3 337
  • 正文 我和宋清朗相戀三年奥额,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片酷誓。...
    茶點(diǎn)故事閱讀 40,127評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡披坏,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出盐数,到底是詐尸還是另有隱情,我是刑警寧澤伞梯,帶...
    沈念sama閱讀 35,812評(píng)論 5 346
  • 正文 年R本政府宣布玫氢,位于F島的核電站帚屉,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏漾峡。R本人自食惡果不足惜攻旦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望生逸。 院中可真熱鬧牢屋,春花似錦、人聲如沸槽袄。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,017評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)遍尺。三九已至截酷,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間乾戏,已是汗流浹背迂苛。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,142評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留鼓择,地道東北人三幻。 一個(gè)月前我還...
    沈念sama閱讀 48,388評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像呐能,于是被迫代替她去往敵國(guó)和親赌髓。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容