在 Oozie 工作流中使用 Shell Action 呼叫 hive -e "$hql",發現產生的 MapReduce 作業皆以 Local 模式執行,未提交至 YARN 叢集,導致效能極差。
Shell Action 啟動的子程序未繼承正確的 Hadoop 環境變數,特別是 HADOOP_CONF_DIR,導致 Hive 客戶端無法定位叢集設定,退回本地模式。
在 Shell 腳本或 Oozie <env-var> 中設定環境變數:
export HADOOP_CONF_DIR=$HADOOP_CONF_DIR:/etc/hive/conf
確保包含 Hive 設定目錄(通常為 /etc/hive/conf),使 Hive 能正確讀取 hive-site.xml 並連接遠端 Metastore 與 YARN。
echo $HADOOP_CONF_DIR 確認變數傳遞。若問題持續,請檢查 Oozie 共享庫是否包含正確的 Hive/JDBC 驅動,並確認 hive-site.xml 中的 hive.execution.engine 設為 mr 或 tez。