无法创建数据库" metastore_db"使用spark-jobserver 0.8.1

时间:2018-04-30 20:53:05

标签: apache-spark spark-jobserver

我正在将我的服务器从spark 2.1.1和job-server 0.8.0(工作正常)升级到spark 2.3.0和job-server 0.8.1-SNAPSHOT。我正在使用JobSqlDao和MySql,并使用SessionContextFactory创建一个sqlContext。在local.conf中,我有:

 sql-context {
      context-factory = spark.jobserver.context.SessionContextFactory
 }

一切都很好,一切看起来都很好,端口8090和4040,但当我尝试向作业服务器发出第一个请求时,我得到了

  

错误XBM0H:无法创建目录/ metastore_db

搜索网页后,这看起来与Hive有关。我没有在我的代码中使用配置单元,但似乎有关新的SessionContextFactory的东西似乎需要它。所以我在spark / conf中添加了一个带有以下内容的hive-site.xml文件:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:derby:;databaseName=/home/mineset/metastore_db;create=true</value>
  <description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
  <name>javax.jdo.option.ConnectionDriverName</name>
  <value>org.apache.derby.jdbc.EmbeddedDriver</value>
</property>
</configuration>

但现在我收到了这个错误:

  

引起:java.net.ConnectException:Call From   ra.esi-internal.esi-group.com/192.168.xxx.xx到192.168.xxx.xx:8020   连接异常失败:java.net.ConnectException:Connection   拒绝;有关更多详情,请参阅   http://wiki.apache.org/hadoop/ConnectionRefused           at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)           at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)           at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)           at java.lang.reflect.Constructor.newInstance(Constructor.java:423)           在org.apache.hadoop.net.NetUtils.wrapWithMessage(NetUtils.java:791)

我也尝试将hive-site.xml配置为使用mysql(acutally mariadb),但后来我遇到了这样的错误:

  

ENGINE = INNODB:指定的密钥太长;最大密钥长度为767   bytes com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:   指定密钥太长;最大密钥长度为767字节   网络搜索表明这可以通过上传至5.7来解决(我目前正在使用5.5并且真的不想升级)。

是否有可用于获取不需要配置单元的sqlContext的上下文工厂?这个SessionContextFactory是0.8.1中的新东西,似乎是我的问题的根源。似乎有很多方法来配置hive(使用derby,mysql,embeded,client等)。我不认为在我的情况下如何配置它会很重要,因为我不会使用它 - 我只是想找到一种不会出错的简单方法。有什么建议吗?

0 个答案:

没有答案