Hive On Tez自定義Job Name
今天在使用Hive On Tez的時候發現一個問題,那就是我們無法設定Tez執行在Yarn上面的Job Name。按照設定MR正常的步驟來設定Job Name發現也是無效的。
這讓我很迷惑,於是想了一下是不是因為TezSession的時候已經寫死了導致的,然通過將Hive的原始碼下載下來(我用的是Hive-3.1.2的原始碼,下載地址:https://mirror.bit.edu.cn/apache/hive/hive-3.1.2/apache-hive-3.1.2-src.tar.gz)
將原始碼下載以後,按照MR的原始碼HiveSession
來推理,想的應該是TezSession
,於是去查詢這個類,理想總是很好的,但是現實往往相反,於是又想到了有一個SessionState
的類,於是又衍生一個想法是不是也有一個叫TesSessionState
的類呢?然後查詢原始碼發現還真的有這個類,那麼我們初步定位到了在這個類中,然後開始閱讀該類ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezSessionState.java
的原始碼發現:
final TezClient session = TezClient.newBuilder("HIVE-" + sessionId, tezConfig)
.setIsSession(true).setLocalResources(commonLocalResources)
.setCredentials(llapCredentials).setServicePluginDescriptor(servicePluginsDescriptor)
.build();
在原始碼中寫死了Job Name是"HIVE-" + sessionId
也就是我們在頁面中看到的HIVE-隨機生成的UUID
,我們自定義Job Name也很簡單,修改原始碼如下:
String tezJobName = tezConfig.get("tez.job.name", "HIVE-" + sessionId);
LOG.info("Tez Job Name " + tezJobName);
final TezClient session = TezClient.newBuilder(tezJobName, tezConfig)
.setIsSession(true).setLocalResources(commonLocalResources)
.setCredentials(llapCredentials).setServicePluginDescriptor(servicePluginsDescriptor)
.build();
修改原始碼後執行以下maven命令進行原始碼重新編譯
mvn clean package -DskipTests -U -X
注意:如果修改了maven下載倉庫為國內映象的話,一定要將maven中央倉庫加到pom.xml檔案中(根目錄的)否則會出現下載jar問題
將編譯後的ql/target/hive-exec-3.1.2.jar
替換原有的Hive中的lib依賴即可!!!
此時我們使用set tez.job.name=tezAppName;
即可,在Yarn介面中即可看到Application Name已經改成了我們自定義的名稱。
使用hive --hiveconf tez.job.name=tezAppName
相關文章
- hive 3.0.0自定義函式Hive函式
- Hive中自定義函式Hive函式
- Hive常用函式及自定義函式Hive函式
- HIVE自定義函式的擴充套件Hive函式套件
- Hive--->建立自定義的UDTF函式Hive函式
- spark讀取hive異常,java.lang.NoClassDefFoundError: org/apache/tez/dag/api/SessionNotRunningSparkHiveJavaErrorApacheAPISession
- Hive函式(內建函式+自定義標準函式UDF)Hive函式
- hive學習筆記之十:使用者自定義聚合函式(UDAF)Hive筆記函式
- android自定義view(自定義數字鍵盤)AndroidView
- netty自定義Decoder用於自定義協議Netty協議
- 好程式設計師大資料培訓分享之hive常見自定義函式程式設計師大資料Hive函式
- 自定義VIEWView
- 自定義SnackBar
- 自定義_ajax
- 自定義 Anaconda
- 自定義ClassLoader
- 自定義QTimeEditQT
- 自定義 tabBartabBar
- tailwind自定義AI
- 自定義 GitGit
- 自定義元件元件
- 自定義表格
- 自定義LinkedList
- 自定義useState
- vue自定義全域性元件(或自定義外掛)Vue元件
- Python程式碼解析: job = next(job for job in jobs if job.job_id == job_id)Python
- [Hive]建表例項與引數解釋——自定義表的儲存格式(textfile、sequencefile、refile)Hive
- 4. 自定義控制元件(4) --- 自定義屬性控制元件
- Android 自定義View:深入理解自定義屬性(七)AndroidView
- nginx的配置檔案server_name的意義 location意義NginxServer
- MySQL自定義排序MySql排序
- JavaScript自定義事件JavaScript事件
- Maven 自定義archeTypeMaven
- SpringBoot 自定義 starterSpring Boot
- 自定義的PopupWindow
- 自定義元件——TitleView元件View
- 自定義目錄
- 自定義 Artisan 命令