方法一
1. 找到目標 Hive 的 hive-site.xml 文件,拷貝到 spark 的 conf 下面。
在我的情況下 /etc/hive/conf/hive-site.xml -> /usr/lib/spark/conf/hive-site.xml
2. 運行期間,遇到一個問題:
java.lang.NoClassDefFoundError: org/apache/tez/dag/api/SessionNotRunning
相關解答:https://issues.apache.org/jira/browse/SPARK-15779
簡單來說,把 "hive.execution.engine" 的 value,從 tez 改成 mr
方法二
創建 SparkSession 的時候,在 config 中配置參數 "hive.metastore.uris",並 enableHiveSupport 即可
val spark = SparkSession.builder() .appName(appName) .config("hive.metastore.uris", "thrift://ip-10-10-242-40.ec2.internal:9083") .enableHiveSupport() .getOrCreate()
一開始,我在 spark-shell 中嘗試沒有成功。。原因是shell啟動時,預先生成了 SparkSession,之后的 getOrCreate 都是直接用了老的實例。