无法连接到 sparkSQL

unable to connect to sparkSQL

我正在为配置单元使用远程 mysql 元存储。当我 运行 配置单元客户端时,它 运行 非常完美。但是当我尝试通过 spark-shell 或 spark-submit 使用 spark-sql 时,我无法连接到配置单元。 & 出现以下错误:

    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 在我为 Metastore 使用 mysql 数据库时尝试连接 derby 数据库。

我正在使用 apache spark 版本 1.3 和 cloudera 版本 CDH 5.4.8

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

  • 将 hive-site.xml 的 soft-link 复制或创建到您的 SPARK_HOME/conf 文件夹。
  • 在 SPARK_HOME/conf/spark-env.sh
  • 中将配置单元库路径添加到类路径
  • 重启Spark集群使一切生效。

我相信您的配置单元-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>