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