无法连接到sparkSQL

时间:2016-06-30 13:54:19

标签: hadoop apache-spark apache-spark-sql metastore

我正在使用远程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

1 个答案:

答案 0 :(得分:0)

似乎spark正在使用默认配置单元设置,请按照以下步骤操作:

  • 将hive-site.xml的软链接复制或创建到SPARK_HOME / conf文件夹。
  • 在SPARK_HOME / conf / spark-env.sh中添加hive lib路径到classpath
  • 重启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>