問題
最近在hue上開多個窗口執(zhí)行不同的sql的時候,發(fā)現(xiàn)如果在某個窗口里面設(shè)置某些properties的時候(比如 set spark.executor.memory=10g)平项,會導(dǎo)致其他窗口里面執(zhí)行的sql失敗。
注: 我們使用spark作為默認(rèn)的執(zhí)行引擎 (即 set hive.execution.engine=spark)
原因
原因是因為 當(dāng)你在hue上用某個賬戶登錄之后瓢棒,執(zhí)行第一個sql的時候特铝,hue會get 到hive的一個connection,hive也會在yarn上創(chuàng)建一個spark的應(yīng)用久脯,獲得到一個session晒骇。而多窗口執(zhí)行sql其實是共用的這一個session霉撵。所以如果你在同一個session里面做查詢的時候是沒問題的磺浙,你可以同時跑很多的sql,但是如果你set properties的時候就會有問題徒坡。因為session是在創(chuàng)建的時候加載properties的撕氧,所以如果你set properties的話就會需要重新創(chuàng)建這個session。也就是說會斷開老的 session創(chuàng)建一個新的session喇完,那么你在跑的其他窗口的查詢就會失敗伦泥。