使用Spark 2.0.2我有一个可以在spark-submit下正常工作的jar。现在我想从Spark JobServer中使用它。使用Spark JobServer spark不使用hive-site.xml上配置的mysql连接
的第一个问题是,这些方法:
public SparkJobValidation validate(SparkContext sc, Config config) {
return SparkJobValid$.MODULE$;
}
@Override
public Object runJob(SparkContext jsc, Config jobConfig) {
//code
}
有过时SparkContext代替SparkSession作为参数。我的解决办法是做到以下几点:
@Override
public Object runJob(SparkContext jsc, Config jobConfig) {
SparkSession ss = SparkSession.builder()
.sparkContext(jsc)
.enableHiveSupport()
.getOrCreate();
return ss.table("purchases").showString(20, true);
}
我没有安装蜂巢,我只是用HiveSupport谁自带Spark和我把蜂房的site.xml在$ SPARK_HOME/conf目录和的工作有火花-提交。
蜂房的site.xml
<?xml version="1.0"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/metastore_db?createDatabaseIfNotExist=true</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>user</value>
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>password</value>
<description>password to use against metastore database</description>
</property>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/spark-warehouse/</value>
<description>Warehouse Location</description>
</property>
</configuration>
但是,当我执行这个罐子是从这个配置文件中的星火JobServer工作只需要在hive.metastore.warehouse.dir。不与MySQL数据库建立任何连接来读取/保存Hive metastore_db,当然,它不能在默认数据库中看到表。我在$ SPARK_HOME/jars文件夹中有mysql-connector-java-5.1.40-bin.jar。
我能做些什么才能连接到位于MySQL数据库中的Hive metastore_db?
你想从本地文件系统或hdfs中读取吗?据我所知,您必须为本地文件系统编写'file:/// data/spark-warehouse /',为hdfs编写'hdfs:// host:port/data/spark-warehouse /'。 –
@SimonSchiff我想从本地文件中读取,我已经采纳了您的建议,但仍然失败。 – Jose