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();

}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值