【云圖說】第235期 DDS讀寫兩步走 帶您領(lǐng)略只讀節(jié)點的風(fēng)采
1055
2025-04-01
WebHcat樣例代碼
Hive提供了WebHcat接口。該文檔利用java把該接口進行了封裝,可以使用java代碼訪問Hive。
代碼中只封裝了一些常用接口,對于沒有其他的接口,可以參考封裝好的代碼自行進行封裝。
1.1??????主要難點:
因hive的webHcat接口未提供認(rèn)證接口,我們這邊只能借助spnego的方式來進行kerberos認(rèn)證。
首先,先進行kerberos認(rèn)證。認(rèn)證完成后,獲得認(rèn)證的信息。(Subject對象用于存放認(rèn)證信息。這是kerberos底層實現(xiàn),有興趣可以自行研究下。)
然后,對HTTP進行封裝,設(shè)置spnego方式需要的配置參數(shù)。參考該方法:WebHcatHttpClient。
最后,采用Subject.doas()方法建立認(rèn)證通道。在該方法內(nèi)進行所有的業(yè)務(wù)操作。
1.2??????代碼介紹:
Body文件夾:webHcat需要用到的一些對象。
Information文件夾:HTTP請求需要的一些類。
比如:
HttpAuthInfo:用于構(gòu)建HTTP請求。
Kerberos:用于封裝kerberos認(rèn)證需要的信息。
RestApi:WebHcat的接口類。
RestHelper:響應(yīng)頭的解析和json字符串轉(zhuǎn)換。
WebHcatHttpClient:構(gòu)建spnego的請求。
WebHcat:主類,里面提供了webhcat接口的使用方法。
1.3??????樣例代碼
String user = "lyysxg@HADOOP.COM"; String keytab = "D:\\fwc\\SparkStudy\\src\\main\\resources\\user.keytab"; String krb5Location = "D:\\fwc\\SparkStudy\\src\\main\\resources\\krb5.conf"; InputStream InputStream = null; HttpAuthInfo httpAuthInfo = null; try { inputStream = new FileInputStream(WebHcat.class.getClassLoader().getResource(DEFAULT_CONFIG_FILE).getPath()); Properties p = new Properties(); p.load(inputStream); httpAuthInfo = HttpAuthInfo.newBuilder().setIp(p.getProperty("ip")) .setPort(Integer.valueOf(p.getProperty("port"))) .build(); WebHcatHttpClient client = WebHcatHttpClient.getClient(httpAuthInfo); RestApi api = new RestApi(client); api.login(user, keytab, krb5Location);
User:是用戶名。
Keytab:keytab文件的路徑。
krb5Location:krb5文件的路徑。
api.login(user, keytab, krb5Location):調(diào)用認(rèn)證代碼進行認(rèn)證。
1.?????列出所有的數(shù)據(jù)庫---api.searchPath();
2.?????獲取指定數(shù)據(jù)庫的詳細信息。api.searchPath(reqDatabaseBody1);
參數(shù):ReqDatabaseBody對象。
3.?????創(chuàng)建數(shù)據(jù)庫api.CreateDataBase(createDataBaBody,?"Test1");
參數(shù):CreateDataBaBody對象,為數(shù)據(jù)庫的名字。
4.?????創(chuàng)建表,api.CreateTable(reqCreateTableBody,?"Test1",?"lyysxg1");
參數(shù):ReqCreateTableBody對象,數(shù)據(jù)庫名,表名
5.?????查詢數(shù)據(jù)庫中的所有,api.searchTable(searchTable);
參數(shù):searchTable對象
6.?????重命名表,api.RenameTable("Test1",?"lyysxg1",?"zwllyysxg");
參數(shù):數(shù)據(jù)庫,表名,新表名
7.?????刪除表,api.DeleteTable(reqDelTableBody);
參數(shù):ReqDelTableBody對象
8.?????刪除數(shù)據(jù)庫,api.DeleteDatabase(delete);
參數(shù):DeleteDataBaseBody對象。
運行效果:
1.4??????附件
EI企業(yè)智能 FusionInsight Hive 數(shù)據(jù)庫
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。