Spark 讀 Hive(不在一個 yarn 集群)


方法一

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 都是直接用了老的實例。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM