ClassLoader not found datanucleusXXXXX

<dependency>-->
    <!--<groupId>org.datanucleus</groupId>-->
    <!--<artifactId>datanucleus-core</artifactId>-->
    <!--<version>3.2.10</version>-->
    <!--<scope>compile</scope>-->
<!--</dependency>-->
<!--<dependency>-->
    <!--<artifactId>datanucleus-rdbms</artifactId>-->
    <!--<groupId>org.datanucleus</groupId>-->
    <!--<version>3.2.9</version>-->
<!--</dependency>-->
<!--<dependency>-->
    <!--<artifactId>datanucleus-api-jdo</artifactId>-->
    <!--<groupId>org.datanucleus</groupId>-->
    <!--<version>3.2.6</version>-->
<!--</dependency>-->
<!--<dependency>-->
    <!--<groupId>org.apache.hive</groupId>-->
    <!--<artifactId>hive-jdbc</artifactId>-->
    <!--<version>1.2.1</version>-->
<!--</dependency>-->
之前使用sparksession操作cachetable時 總是報ClassLoader not found datanucleusXXXXX,以爲是包依賴的問題,因此,將sparksql中的相關依賴包都排除,再手動添加依賴也無法解決。後面詢問的組內的研發大哥,他說是因爲hive元數據存放於MySQL、。同時,整個項目的數據庫也是存放於mysql的同一個數據庫,因此出現了衝突,所以不建議使用hive源數據uri的連接方式,在sparkconf中刪除以下幾個配置:
t("javax.jdo.PersistenceManagerFactoryClass", "org.datanucleus.jdo.JDOPersistenceManagerFactory")
//.set("javax.jdo.option.ConnectionURL", "jdbc:mysql://****?characterEncoding=utf8&autoReconnect=true")
//.set("javax.jdo.option.ConnectionUserName", "**")
//.set("javax.jdo.option.ConnectionPassword", "**")
改用metastore的連接方式,最終問題得到解決。完整獲取sparksession的代碼如下

public SparkUtil() {
    //改用metastore的方式連接hive
    SparkConf conf = new SparkConf()
            .setAppName("Java Spark Hive Example")
            .set("spark.sql.warehouse.dir", warehouseLocation)
            .setMaster("***")
            //.set("datanucleus.rdbms.datastoreAdapterClassName", "org.datanucleus.store.rdbms.adapter.MySQLAdapter")
            //.set("datanucleus.classLoaderResolverName", "jdo")
            //.set("javax.jdo.PersistenceManagerFactoryClass", "org.datanucleus.jdo.JDOPersistenceManagerFactory")
            //.set("javax.jdo.option.ConnectionURL", "jdbc:mysql:****?characterEncoding=utf8&autoReconnect=true")
            //.set("javax.jdo.option.ConnectionUserName", "***")
            //.set("javax.jdo.option.ConnectionPassword", "**")
            //.set("spark.sql.codegen.wholeStage", "false")
            .set("hive.metastore.uris", "thrift://****:9083")
            //.set("javax.jdo.option.ConnectionDriverName", "com.mysql.jdbc.Driver")
            .set("spark.driver.extraClassPath", "/root/xyz/intelliaccquery/lib/*.jar");
    this.spark = SparkSession
            .builder()
            .config(conf)
            .enableHiveSupport()
            .getOrCreate();

}



發佈了31 篇原創文章 · 獲贊 11 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章