精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Hdfs 相對(duì)路徑與靜態(tài)代碼塊引起的問題

大數(shù)據(jù)
HIVE 作為大數(shù)據(jù)生態(tài)的數(shù)倉解決方案,因?yàn)闅v史的原因在很多行業(yè)很多公司都有著廣泛的應(yīng)用。對(duì)于比較復(fù)雜的業(yè)務(wù)邏輯,HIVE SQL 往往比較難以表達(dá),此時(shí)大家在開發(fā)中往往會(huì)輔以 HIVE UDF。所以充分理解和掌握 HIVE UDF正確的表寫和使用方式,是大數(shù)據(jù)從業(yè)人員必不可少的一項(xiàng)技能。

[[414192]]

本文轉(zhuǎn)載自微信公眾號(hào)「明哥的IT隨筆」,作者IT明哥。轉(zhuǎn)載本文請(qǐng)聯(lián)系明哥的IT隨筆公眾號(hào)。

前言

大家好,我是明哥。

HIVE 作為大數(shù)據(jù)生態(tài)的數(shù)倉解決方案,因?yàn)闅v史的原因在很多行業(yè)很多公司都有著廣泛的應(yīng)用。對(duì)于比較復(fù)雜的業(yè)務(wù)邏輯,HIVE SQL 往往比較難以表達(dá),此時(shí)大家在開發(fā)中往往會(huì)輔以 HIVE UDF。所以充分理解和掌握 HIVE UDF正確的表寫和使用方式,是大數(shù)據(jù)從業(yè)人員必不可少的一項(xiàng)技能。

關(guān)于HIVE UDF 的使用,明哥在前段時(shí)間發(fā)過兩篇博文,分別是 “如何在 hive udf 中訪問配置數(shù)據(jù)-方案匯總與對(duì)比” 和 “淺析 hive udaf 的正確編寫方式- 論姿勢的重要性" ,兩篇博文描述的都是 HIVE UDF 在編寫使用過程中容易犯的錯(cuò)誤。

但 UDF 編寫使用過程中遇到的問題往往很多遠(yuǎn)遠(yuǎn)不止以上兩個(gè),所以明哥決定編寫一個(gè)系列 - “淺析 hive udf 的正確編寫和使用方式 - 論姿勢的重要性“,以上兩篇博文可以算做這個(gè)系列中的系列一和系列二,本文是該系列的系列三。以下是正文。

時(shí)間緊張,急于知道結(jié)論的小伙伴,可以直接看最后一部分,問題總結(jié)。

問題現(xiàn)象與初步分析

產(chǎn)品部人員反饋,某 HIVE UDF 通過 hive 的舊客戶端即 hive service --cli方式可以正常使用,但使用新客戶端 beeline 時(shí)卻會(huì)報(bào)錯(cuò),客戶端的報(bào)錯(cuò)信息沒有啥明確的有意義的信息,如下圖圖一和圖二所示:

beeline

hive

咨詢產(chǎn)品部開發(fā)人員,該 UDF 的功能是返回給定業(yè)務(wù)日期的下一個(gè)業(yè)務(wù)日期,在背后會(huì)讀取 HDFS上的一個(gè)日期類配置文件;經(jīng)查看該 UDF 源碼,發(fā)現(xiàn)該日期類配置文件的路徑,使用的是相對(duì)路徑,如下圖所示:

code-relative-path

熟悉 HDFS 的小伙伴都知道 HDFS 有相對(duì)路徑的概念,即代碼中用相對(duì)路徑方式指定的文件, 在不同用戶執(zhí)行作業(yè)時(shí)會(huì)被解析為不同用戶的根目錄下的文件,比如相對(duì)路徑 dir1/fileA, 使用hive 用戶執(zhí)行時(shí)作業(yè)時(shí)會(huì)被解析為 /user/hive/dir1/fileA, 使用xyz用戶執(zhí)行作業(yè)時(shí)會(huì)被解析為 /user/xyz/dir1/fileA, 很多 hdfs 上的文件找不到的問題都是因?yàn)樵撛颉R驗(yàn)橛械沫h(huán)境有的用戶能執(zhí)行成功而另外的環(huán)境另外的用戶執(zhí)行卻會(huì)失敗,我們往往戲謔是人品問題,哈哈。

所以順藤摸瓜,看到這里有使用相對(duì)路徑指定文件,我們一個(gè)自然的思路是查看日志驗(yàn)證問題。需要注意,這里要查看的是服務(wù)端的日志,即 beeline 連接的 hiveserver2 實(shí)例的日志,在 cdh 中一般是 /var/log/hive下。果不其然,看到了熟悉的報(bào)錯(cuò)信息:

hiveserver2-log

進(jìn)一步咨詢產(chǎn)品部人員,他們把該配置文件上傳到了 /user/root/ 目錄下,沒有上傳過其它目錄。這也解釋了,為什么 他們 hive service --cli 方式能夠成功,而 beeline方式如 beeline -u jdbc:hive2://xxx:10000/default -n userA -p passwd 方式卻會(huì)失敗:因?yàn)樗麄兪褂们罢邥r(shí)是固定在 root 登錄用戶的身份下提交的作業(yè)(這其實(shí)不太合規(guī)范,一般不建議用root身份運(yùn)行應(yīng)用程序),而使用后者時(shí)實(shí)際生效的用戶是 -n 參數(shù)指定的用戶而不是當(dāng)前登錄用戶!(沒有啟用用戶身份認(rèn)證或啟用ldap認(rèn)證時(shí),都是通過 -n 參數(shù)指定用戶身份;啟用kerberos認(rèn)證時(shí),通過kerberos的 principal指定用戶身份)。這里還有個(gè)小細(xì)節(jié),如果沒有啟用身份認(rèn)證且 beeline后沒有使用 -n參數(shù)指定用戶,真正生效的用戶時(shí)anonyous匿名用戶,對(duì)應(yīng)的 home directory 是 /user/anonymous.

分析到這里,我們覺得只需要上傳該配置文件到對(duì)應(yīng)用戶的 home directory下,即可解決該問題了。但實(shí)際驗(yàn)證發(fā)現(xiàn),啪啪打臉,同樣的問題仍然存在!

問題進(jìn)一步分析與解決

再次仔細(xì)查看相關(guān)代碼,發(fā)現(xiàn)了問題所在:該 UDF 讀取配置文件的內(nèi)容,使用的是類的靜態(tài)代碼塊(不是靜態(tài)方法)。為什么使用靜態(tài)代碼塊會(huì)引起問題?要回答這個(gè)問題,需要比較扎實(shí)的 JAVA 功底, 和對(duì) UDF 執(zhí)行機(jī)制的深刻理解。小伙伴們可以下想下。

code-static

不賣關(guān)子,直接說原因:我們知道 SQL 和 UDF 的解析編譯優(yōu)化和生成 mr/tez/spark 任務(wù)是在 hiveserver2 中進(jìn)行的,但并不是所有的 sql 和 udf 都會(huì)生成 mr/tez/spark 任務(wù),比如這里該 UDF就不會(huì)生成 mr/tez/spark 任務(wù),也不需要向 yarn 申請(qǐng)資源獲得 container 容器,而是直接在 hiveserver2 中執(zhí)行的。所以前幾次 UDF的失敗調(diào)用時(shí),該 hiveserver2 這個(gè)jvm 已經(jīng)加載了對(duì)應(yīng)的類,此次再次調(diào)用該 UDF 時(shí)不需要重新加載該類,自然也不會(huì)重新執(zhí)行類的靜態(tài)代碼塊,所以沒有重新讀取配置文件的內(nèi)容,所以沒有更新對(duì)應(yīng)的配置變量,執(zhí)行也就失敗了。

重新啟動(dòng)該 hiveserver2 實(shí)例后,再次提交該 udf,會(huì)重新加載對(duì)應(yīng)的類,并執(zhí)行其中的靜態(tài)代碼塊讀取配置文件的內(nèi)容,讀取成功后會(huì)更新對(duì)應(yīng)的配置變量,最后作業(yè)執(zhí)行成功。

問題總結(jié)

  • HDFS 有相對(duì)路徑的概念,即代碼中用相對(duì)路徑方式指定的文件, 在不同用戶執(zhí)行作業(yè)時(shí)會(huì)被解析為不同用戶的根目錄下的文件,比如相對(duì)路徑 dir1/fileA, 使用hive 用戶執(zhí)行時(shí)作業(yè)時(shí)會(huì)被解析為 /user/hive/dir1/fileA, 使用xyz用戶執(zhí)行作業(yè)時(shí)會(huì)被解析為 /user/xyz/dir1/fileA, 很多 hdfs 上的文件找不到的問題都是因?yàn)樵撛?
  • Hive SQL 和 UDF 的解析編譯和優(yōu)化是在 hiveserver2 中進(jìn)行的,解析編譯和優(yōu)化的結(jié)果一般是生成 mr/tez/spark 任務(wù),這些 mr/tez/spark 任務(wù)是在向 yarn 申請(qǐng)獲得的 container 容器對(duì)應(yīng)的 jvm 中執(zhí)行的;但并不是所有的 sql 和 udf 都會(huì)生成 mr/tez/spark 任務(wù),此時(shí)其真正的執(zhí)行就是直接在 hiveserver2 這個(gè)已經(jīng)存在的 jvm 中執(zhí)行的,該 hiveserver2 這個(gè) jvm 的生命周期跟 udf 的執(zhí)行無關(guān),如果涉及到配置環(huán)境變量,系統(tǒng)參數(shù),或加載類及執(zhí)行靜態(tài)代碼塊,要尤其小心,必要時(shí)需要重啟 hiveserver2;(udf 中需要謹(jǐn)慎只用靜態(tài)代碼塊,因?yàn)殪o態(tài)代碼塊只有在初次加載類的時(shí)候才會(huì)執(zhí)行)
  • udf中讀取配置文件,有多種方式,常見的有:

 

配置文件使用絕對(duì)路徑指定,且在代碼中寫死絕對(duì)路徑;

配置文件使用絕對(duì)路徑,但在代碼中通過讀取本地配置文件獲取hdfs上配置文件的最終絕對(duì)路徑;

配置文件使用相對(duì)路徑,在客戶現(xiàn)場部署時(shí)需要確定執(zhí)行作業(yè)的真正用戶身份,并上傳該配置文件到對(duì)應(yīng)用戶的跟目錄下的特定路徑;

 

責(zé)任編輯:武曉燕 來源: 明哥的IT隨筆
相關(guān)推薦

2011-07-11 13:29:03

JAVA

2010-06-23 17:26:01

2011-06-23 15:33:24

SEO

2021-08-04 10:15:14

Go路徑語言

2009-08-06 18:31:57

C#相對(duì)路徑絕對(duì)路徑

2010-03-18 08:48:30

Python入門

2022-08-29 14:11:10

Linux絕對(duì)路徑相對(duì)路徑

2022-11-16 10:13:29

Linux相對(duì)路徑絕對(duì)路徑

2009-08-07 13:24:35

C#獲取相對(duì)路徑

2022-04-24 15:33:38

鴻蒙開發(fā)操作系統(tǒng)

2009-08-07 13:38:18

C#文件相對(duì)路徑

2009-08-07 13:16:27

c#相對(duì)路徑寫法

2009-08-06 18:03:21

C#相對(duì)路徑

2009-08-07 14:47:23

C#路徑問題

2024-02-01 08:28:28

2009-08-27 10:40:56

Java路徑

2016-11-24 15:03:58

JAVANATIVE野指針

2016-11-24 15:39:03

JavaNATIVE野指針

2021-09-02 07:56:46

HDFSHIVE元數(shù)據(jù)

2019-08-30 09:54:39

LinuxC語言文本編輯器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

黄色片视频在线播放| 中文人妻熟女乱又乱精品| 欧美日本高清视频在线观看| 中文字幕一区在线播放| 亚洲国产日韩欧美综合久久| 久久99蜜桃精品| 日韩电影精品| 欧美性猛交xxxx免费看| 国产一二三区在线| 波霸ol色综合久久| 欧美日韩一区二区精品| 亚洲精品国产setv| 成年人深夜视频| 国产一区二区三区免费看| 69av视频在线观看| 捷克做爰xxxⅹ性视频| 国产精品福利无圣光在线一区| 国产精久久一区二区| 国产精品久久久久久久久电影网| 色噜噜夜夜夜综合网| 久久视频一区二区| 欧美日韩偷拍视频| 中文字幕一区二区三三| 在线黄色免费看| 国模精品视频一区二区三区| 欧美日韩亚洲另类| 欧美理伦片在线播放| 一区二区伦理片| 精品调教chinesegay| 日本一区二区在线不卡| 麻豆精品在线播放| 国产精品尤物视频| 成人三级在线| 精品av在线播放| 欧美日韩三区| 日韩成人av在线资源| 久久久久久久9| 国产成人亚洲精品青草天美| 久久经典视频| 成人涩涩小片视频日本| 欧美一级爱爱| 久久蜜桃香蕉精品一区二区三区| 成人av黄色| 又骚又黄的视频| 2025韩国理伦片在线观看| 成人自拍视频在线观看| 国产网友自拍视频| 在线日韩av观看| 欧美精品丝袜中出| 日本午夜精品视频在线观看| 黑森林av导航| 最近更新的2019中文字幕| 欧美激情第四页| 成年人视频在线免费| 日韩欧亚中文在线| 日本55丰满熟妇厨房伦| 亚洲国产精久久久久久 | 美女久久精品| 亚洲欧美日韩一级| 欧美精品 日韩| 亚洲天堂av资源在线观看| 亚洲精品国产精品国产| 天堂av免费在线| 精品sm捆绑视频| 亚洲国产国产亚洲一二三| 日本不良网站在线观看| 三妻四妾完整版在线观看电视剧 | 亚洲黄色在线播放| 国产欧美一区二区三区在线看| 欧日韩在线观看| 97人人精品| 国产jizz18女人高潮| 久久大香伊蕉在人线观看热2| 91av在线不卡| 日本丶国产丶欧美色综合| 国产精品88久久久久久| www国产在线| 国产剧情在线视频| 青青草视频播放| 国产原创欧美精品| 欧美日韩的一区二区| 国产精品一区二区三区网站| 日韩福利电影在线观看| 日本а中文在线天堂| 精品夜夜澡人妻无码av| 青青草综合视频| 成人国产在线看| 欧美国产一区视频在线观看| 色哟哟免费在线观看| 蜜桃视频无码区在线观看| 国产av无码专区亚洲精品| 精品福利一二区| 成人羞羞在线观看网站| 裸体xxxx视频在线| 五月婷婷一区二区| 久久综合激情网| 爱情岛论坛亚洲入口| 一本色道久久综合狠狠躁篇的优点| 亚洲精品自拍动漫在线| 五月天一区二区三区| 婷婷精品进入| aaa级黄色片| 国产人妻精品一区二区三区不卡 | 亚洲18在线看污www麻豆| 欧美视频第二页| 丁香激情综合五月| 久久综合视频网| 夜夜嗨一区二区三区| 亚洲AV无码一区二区三区少妇| 日本wwwxx| 国产精久久一区二区三区| 国产高清免费在线| 欧美一级午夜免费电影| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 日韩黄色影片| 亚洲国产精品自拍视频| 日韩免费高清一区二区| 中文字幕在线免费看线人| 国产欧美欧洲在线观看| www.亚洲天堂| 久久久久久久久久久av| 欧美sm极限捆绑bd| 欧美一区二区三区激情视频 | 国产精品一二三产区| 最新97超碰在线| 成人性视频免费看| 欧美视频在线观看网站| 亚洲不卡中文字幕无码| 日本在线播放不卡| 欧美在线www| 色播久久人人爽人人爽人人片视av| 亚洲区免费影片| 国产精品123| 91一区二区| 久久成人免费| 亚洲伦伦在线| 香蕉久久一区| 女人18毛片一区二区三区| 日本不卡视频| 一本加勒比波多野结衣| 国产成人精品久久| 亚洲欧美日韩成人| 97久久精品人人澡人人爽缅北| 亚洲丁香婷深爱综合| 亚洲一区影音先锋| 一区二区三区在线看| 欧美日韩国产另类不卡| |精品福利一区二区三区| 日韩精品亚洲专区| 美腿丝袜亚洲综合| 一区二区三区不卡视频在线观看| 亚洲东热激情| 亚洲国产日韩欧美一区二区三区| 久久国产精品露脸对白| 一区精品久久| 91精品啪在线观看国产手机| 51社区在线成人免费视频| 亚洲va久久| av影片在线| 国产精品—色呦呦| 欧美成年网站| 妺妺窝人体色www在线下载| 婷婷五月综合缴情在线视频| www.亚洲自拍| 成人免费毛片网| 91超碰在线免费观看| 欧美一区二区三区成人久久片| 欧美日韩在线视频一区二区三区| 国产成人av在线| 国产精品中文字幕久久久| 亚洲精品视频一二三| 国产福利精品av综合导导航| 国产精品一区二区三| 最新欧美日韩亚洲| 成人免费视频网址| 国产一区二区中文字幕免费看| 久久亚洲国产精品日日av夜夜| 久久国产精品久久久| 99re视频在线| 国产精品青青在线观看爽香蕉| 日本一区精品| 欧美日韩电影一区二区三区| 欧美久久电影| 国产精品吴梦梦| 精品视频在线看| 久久久久九九九九| 日韩中文有码在线视频| 成人高清在线观看| 91在线观看网站| 好看的日韩精品| 国产精品丝袜白浆摸在线| 国产九色精品| 久久久久网址| 蜜桃臀一区二区三区| 日本三区在线观看| 日本五级黄色片| 性折磨bdsm欧美激情另类| 国产伦精品一区二区三区四区视频_| 蜜臀久久99精品久久久久久| 亚洲综合久久av一区二区三区| 亚洲成人黄色片| 高h放荡受浪受bl| **国产精品| jizz亚洲女人高潮大叫| 国产一区清纯| 日本不卡不码高清免费观看| 中文字幕免费精品| 欧美午夜电影在线观看| 五月婷婷亚洲| 麻豆精品新av中文字幕| 国产在线精品一区二区| 久久精品久久精品| 精品久久中文字幕| 91精品国产综合久久蜜臀 | 黄色网址在线免费观看| 91福利精品在线观看| 91精品电影| 国产欧美亚洲精品a| 久久激情婷婷| 国产成人亚洲综合色影视| 久久只精品国产| 亚洲国产日产av| 欧美精品欧美精品系列| 日韩欧美第一页| 中文字幕国产亚洲| 精品综合在线| 911福利视频| 91精品又粗又猛又爽| 久久久久久久久久久97| 一区二区高清不卡| 日本黄色一区| 亚洲精品久久久久久动漫器材一区 | 国语自产精品视频在线看一大j8 | 一级性生活免费视频| 福利网址在线观看| av毛片在线免费看| 日韩中文字幕| 久久蜜桃av| 成人av在线资源| 亚洲丁香婷深爱综合| 91精品国产综合久久精品图片 | 亚洲电影男人天堂| 在线午夜精品| 自拍视频在线观看一区二区| 亚洲国产精品视频在线观看| 国产日韩欧美在线| 秋霞无码一区二区| 全网免费在线播放视频入口| 国产特级aaaaaa大片| 日本一本在线免费福利| 欧州一区二区| 国产精品久久久久影院| 国产婷婷97碰碰久久人人蜜臀 | 色噜噜狠狠色综合网图区| 国产在线一区二区三区播放| 成人免费看黄网站| 国产日本一区二区三区| 国模大尺度视频| 一区在线影院| 欧美精品在线观看| 顶级网黄在线播放| 久久久精品免费视频| 国产最新在线| 美女黄色丝袜一区| 理论片午午伦夜理片在线播放| 这里精品视频免费| 日本不卡不卡| 久久久噜噜噜久久| 日韩脚交footjobhd| 69国产精品成人在线播放| 国产在线二区| 久久久亚洲精选| 中文一区一区三区高中清不卡免费| 57pao国产成人免费| 免费h在线看| 日韩暖暖在线视频| 国产精品99| 91在线看网站| 台湾亚洲精品一区二区tv| 日本午夜一区二区三区| 国产精品99久久精品| 国产又粗又长又爽视频| 亚洲狼人精品一区二区三区| 欧洲av无码放荡人妇网站| 人禽交欧美网站| 性久久久久久久久久久久久久| 国产福利一区二区| 中文字幕在线观看网址| 国产欧美中文在线| 精品伦精品一区二区三区视频密桃| 日本一区二区不卡视频| 久久黄色小视频| 色婷婷狠狠综合| 国产99对白在线播放| 亚洲精品久久久久中文字幕二区| 国产永久免费高清在线观看| 久久综合国产精品台湾中文娱乐网| 波多野结衣精品| 国产成人极品视频| 高清国产一区二区三区四区五区| 精品国产一区二区三区日日嗨| 成人免费电影网址| 国产成人三级视频| 亚洲永久免费精品| 在线播放黄色av| 久久亚洲免费视频| 欧美成人免费观看视频| 色婷婷亚洲综合| 午夜精品久久久久久久99热黄桃| 精品国产凹凸成av人导航| a天堂在线资源| 8050国产精品久久久久久| 国产精品成人3p一区二区三区| 国产成人精品日本亚洲11| 青草国产精品| av 日韩 人妻 黑人 综合 无码| 日韩高清一级片| 亚洲av成人精品一区二区三区| 中文字幕国产精品一区二区| 亚洲黄色三级视频| 日韩久久精品一区| 欧美18hd| 国产精品国产三级国产aⅴ浪潮| 超碰在线亚洲| 日韩精品福利片午夜免费观看| 日日夜夜一区二区| 成人免费看aa片| 污片在线观看一区二区| 精品久久国产视频| 中文字幕国产亚洲2019| gogo亚洲高清大胆美女人体 | 久久人人爽人人爽人人av| 亚洲欧美成人| 中文在线观看免费视频| 一区二区三区四区视频精品免费| 中文字幕在线日本| 亚洲大胆人体视频| 天天色天天射天天综合网| 成人网欧美在线视频| 99精品视频精品精品视频| 国产激情在线观看视频| 91亚洲精华国产精华精华液| 老女人性淫交视频| 日韩欧美国产小视频| 爆操欧美美女| 3d蒂法精品啪啪一区二区免费| 91亚洲国产成人久久精品| 狠狠干狠狠操视频| 国产精品理伦片| 国产精品久久免费| 最近2019好看的中文字幕免费| 毛片无码国产| 欧美国产综合视频| 乱码第一页成人| 少妇光屁股影院| 一本大道综合伊人精品热热| 同心难改在线观看| 日本视频久久久| 蜜桃国内精品久久久久软件9| 国产亚洲天堂网| 国产日韩欧美a| 成人a v视频| 精品一区二区三区四区| 高清不卡av| 四虎一区二区| 蜜桃av一区二区在线观看| 97在线观看免费视频| 色婷婷狠狠综合| 精品黄色免费中文电影在线播放| 91免费精品视频| 欧美亚洲不卡| 欧美性xxxx图片| 欧美午夜电影一区| 中文字幕日本在线| 亚洲xxxx视频| 日韩午夜在线电影| 日本黄色网址大全| 欧美日韩国产精品成人| a级网站在线播放| 国产精品免费一区二区三区四区 | 91日韩视频在线观看| 成人欧美一区二区三区1314| 国产黄a三级三级看三级| 97精品国产97久久久久久| 狠狠操综合网| 国产999免费视频| 色综合夜色一区| 成年人黄视频在线观看| 国产高清在线一区| 石原莉奈在线亚洲二区| 无码黑人精品一区二区| 日韩欧美一卡二卡| 偷拍中文亚洲欧美动漫| 日韩福利在线| 粉嫩av一区二区三区粉嫩| 国产在线观看黄色| 日韩在线观看免费高清完整版| 国产区精品视频在线观看豆花| 男人插女人下面免费视频| 亚洲欧美日韩在线播放|