Spark 2.0.2 での作業 Spark-submit で正常に動作する jar があります。今、Spark JobServer から使用したいと思います。
最初の問題は、メソッドが次のことでした。
public SparkJobValidation validate(SparkContext sc, Config config) {
return SparkJobValid$.MODULE$;
}
@Override
public Object runJob(SparkContext jsc, Config jobConfig) {
//code
}
SparkSession の代わりに非推奨の SparkContext をパラメーターとして使用します。私の解決策は、次のことを行うことでした。
@Override
public Object runJob(SparkContext jsc, Config jobConfig) {
SparkSession ss = SparkSession.builder()
.sparkContext(jsc)
.enableHiveSupport()
.getOrCreate();
return ss.table("purchases").showString(20, true);
}
Hive がインストールされていません。Spark に付属の HiveSupport を使用しているだけで、hive-site.xml を $SPARK_HOME/conf の下に配置すると、spark-submit で動作します。
hive-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>
しかし、この構成ファイルから Spark JobServer のジョブとしてこの jar を実行すると、hive.metastore.warehouse.dirのみが取得されます。Hive metastore_db を読み取り/保存するために MySQL db との接続を確立しません。もちろん、デフォルト db のテーブルを表示することもできません。$SPARK_HOME/jars フォルダーに mysql-connector-java-5.1.40-bin.jar があります。
MySQL DB にある Hive metastore_db に接続するにはどうすればよいですか?