使用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