我正在使用远程mysql metastore进行配置单元。当我运行蜂巢客户端它运行完美。但是当我尝试通过spark-shell或spark-submit使用spark-sql时,我无法连接到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
我没有理解为什么当我使用mysql数据库进行Metastore时,spark会尝试连接derby数据库。
我使用的是apache spark 1.3版& cloudera版本CDH 5.4.8
答案 0 :(得分:0)
似乎spark正在使用默认配置单元设置,请按照以下步骤操作:
我相信您的hive-site.xml具有MYSQL Metastore的位置?如果没有,请按照以下步骤重新启动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>