摘要:最近在做一個(gè)面向的查詢服務(wù),主程序是寫的。舊版本的異步激活方式很簡單但在試驗(yàn)無效,查到加入了一個(gè)的布爾型參數(shù),猜想可能與異步有關(guān),結(jié)果一試就靈。至于同樣走的了,官方明確表示是不支持異步的啦。
最近在做一個(gè)面向Hive的查詢服務(wù),主程序是Python寫的。
Hive的查詢時(shí)間通常都要在1分鐘以上,讓用戶等待不太友好,因此我們想到了用HiveServer2的異步接口,第一時(shí)間給用戶返回,下次用戶再訪問的時(shí)候,利用密鑰重建上次的查詢,獲取上個(gè)查詢的狀態(tài),如果用戶等待太久了還可以主動(dòng)取消。
環(huán)境搭建
我們的Hadoop版本是CDH5.1.0,對應(yīng)Hive版本是0.12.0。
Python與HiveServer2的通信是通過Thrift這種跨語言的協(xié)議實(shí)現(xiàn)的,所以首先要安裝Python的Thrift依賴庫。Thrift和Hive的版本更迭很快,對于0.12.0版本,推薦用y-lan同學(xué)的安裝包,反正我親證是沒什么問題。
要注意的是,默認(rèn)是需要SASL客戶端中轉(zhuǎn)的,對安全性要求不高的同學(xué)可以關(guān)掉SASL驗(yàn)證:
在Cloudera Manager控制臺(tái)進(jìn)入Hive->Configuration->HiveServer2 Default Group->Advanced,
「HiveServer2 Advanced Configuration Snippet (Safety Valve) for hive-site.xml」的配置中加入一行:
hive.server2.authentication NOSASL
客戶端
HiveServer2異步的實(shí)現(xiàn)原理是,HiveServer2對每個(gè)operation都配置了惟一的ID(其實(shí)是guid和secret兩個(gè)參數(shù)),通過ID可以恢復(fù)上次的operation(其實(shí)session也是)。
舊版本的異步激活方式很簡單:
SET hive.server2.blocking.query=true
但在0.12.0試驗(yàn)無效,grepcode查到TExecuteStatementReq加入了一個(gè)runAsync的布爾型參數(shù),猜想可能與異步有關(guān),結(jié)果一試就靈。
附上源碼hiveserver2.py,有需要的同學(xué)自取吧。
至于同樣走HiveServer2的Impala了,官方明確表示是不支持異步的啦(Async Queries Over Thrift / Beeswax)。
來自:建造者說
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/45331.html
摘要:全棧數(shù)據(jù)之門前言自強(qiáng)不息,厚德載物,自由之光,你是我的眼基礎(chǔ),從零開始之門文件操作權(quán)限管理軟件安裝實(shí)戰(zhàn)經(jīng)驗(yàn)與,文本處理文本工具的使用家族的使用綜合案例數(shù)據(jù)工程,必備分析文件探索內(nèi)容探索交差并補(bǔ)其他常用的命令批量操作結(jié)語快捷鍵,之門提高效率光 showImg(https://segmentfault.com/img/bVK0aK?w=350&h=350); 全棧數(shù)據(jù)之門 前言 自強(qiáng)不息,...
閱讀 3012·2021-11-24 10:22
閱讀 3058·2021-11-23 10:10
閱讀 1367·2021-09-28 09:35
閱讀 1761·2019-08-29 13:16
閱讀 1400·2019-08-26 13:29
閱讀 2798·2019-08-26 10:27
閱讀 687·2019-08-26 10:09
閱讀 1450·2019-08-23 18:05