无法连接到sparksql

vshtjzan  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(416)

我正在为配置单元使用远程mysql元存储。当我运行hive客户端时,它运行得非常完美。但是当我试图通过sparkshell或sparksmit使用sparksql时,我无法连接到hive获取以下错误:

Caused by: javax.jdo.JDOFatalInternalException: Error creating transactional connection factory
Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.apache.derby.jdbc.EmbeddedDriver

我不明白为什么spark在使用mysql数据库进行metastore时尝试连接derby数据库。
我使用的是apachesparkversion1.3和clouderaversioncdh5.4.8

rsl1atfo

rsl1atfo1#

spark似乎正在使用默认的配置单元设置,请执行以下步骤:
将hive-site.xml的软链接复制或创建到spark\u home/conf文件夹。
在spark_home/conf/spark-env.sh中将配置单元库路径添加到类路径
重新启动spark cluster以使一切生效。
我相信你的hive-site.xml有mysql元存储的位置?如果没有,请按照以下步骤重新启动spark shell:

<property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://MYSQL_HOST:3306/hive_{version}</value>
    <description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
    <description>Driver class name for a JDBC metastore/description>
</property>
<property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>XXXXXXXX</value>
    <description>Username to use against metastore database/description>
</property> 
<property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>XXXXXXXX</value>
    <description>Password to use against metastore database/description>
</property>

相关问题