使用spark.sql运行任务出现See the nested exceptionorg.datanucleus.exceptions.NucleusException: Error creatin

问题描述:

在使用pyspark链接Hive数据库访问其中库表时,步骤为:

  1. 创建SparkSeesion对象;
  2. 书写hive_sql查询语句;
  3. 使用spark.sql(hive_sql)进行查询。

但是提交任务后出现如下错误:

[Thread-4] ERROR DataNucleus.Datastore - Exception thrown creating StoreManager. See the nested exception
org.datanucleus.exceptions.NucleusException: Error creating transactional connection factory
        at org.datanucleus.store.AbstractStoreManager.registerConnectionFactory(AbstractStoreManager.java:214) ~[datanucleus-core-4.1.17.jar:?]
        at org.datanucleus.store.AbstractStoreManager.<init>(AbstractStoreManager.java:162) ~[datanucleus-core-4.1.17.jar:?]
        at org.datanucleus.store.rdbms.RDBMSStoreManager.<init>(RDBMSStoreManager.java:285) ~[datanucleus-rdbms-4.1.19.jar:?]
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_391]
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:1.8.0_391]
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:1.8.0_391]
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[?:1.8.0_391]
        at org.datanucleus.plugin.NonManagedPluginRegistry.createExecutableExtension(NonManagedPluginRegistry.java:606) ~[datanucleus-core-4.1.17.jar:?]
        at org.datanucleus.plugin.PluginManager.createExecutableExtension(PluginManager.java:301) ~[datanucleus-core-4.1.17.jar:?]
        at org.datanucleus.NucleusContextHelper.createStoreManagerForProperties(NucleusContextHelper.java:133) ~[datanucleus-core-4.1.17.jar:?]
        at org.datanucleus.PersistenceNucleusContextImpl.initialise(PersistenceNucleusContextImpl.java:422) ~[datanucleus-core-4.1.17.jar:?]

 经过查找网上没有给出明确的解决方法,均是模糊不清。不过也有道友出现类似的情况,通过日志定位到问题所在应为Spark/Jars文件夹下缺少mysql-connector.jar包,从而无法访问Hive的metastore。

解决方法:

首先需要下载mysql-connector.jar包,当然也可尝试在自己配置的Hive环境中找到此jar包,一般路径为$HIVE_HOME/lib。

1.Spark-shell

        在打开Spark-shell时命令修改为:

spark-shell --driver-class-path $HIVE_HOME/lib/mysql-connector-j-8.1.0.jar

其中$HIVE_HOME是自己配置的路径,需要各位道友自行修改。出现spark-shell后可以直接输入测试代码进行测试,查询成功。

spark.sql("select * from test;");

2.运行脚本

        如想直接运行脚本,则需要把下载或找到的mysql-connector.jar复制到$SPARK_HOME/jars路径下,然后直接运行脚本即可,显示查询成功。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值