【问题标题】:unable to connect to sparkSQL无法连接到 sparkSQL
【发布时间】:2016-06-30 23:22:18
【问题描述】:

我正在为 hive 使用远程 mysql 元存储。当我运行 hive 客户端时,它运行完美。但是当我尝试通过 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

【问题讨论】:

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


    【解决方案1】:

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

    • 复制或创建 hive-site.xml 的软链接到您的 SPARK_HOME/conf 文件夹。
    • 将 Hive lib 路径添加到 SPARK_HOME/conf/spark-env.sh 中的类路径
    • 重启 Spark 集群以使一切生效。

    我相信你的 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>
    

    【讨论】:

    • 感谢老兄的回答,它只能通过将 hive-site.xml 复制到 spark conf 类路径来解决。不需要为我重新启动集群。
    猜你喜欢
    • 1970-01-01
    • 2015-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-07
    相关资源
    最近更新 更多