Arbeiten mit Spark 2.0.2 Ich habe ein Glas, das mit Spark-submit funktioniert. Jetzt möchte ich es von Spark JobServer verwenden.Verwenden von Spark JobServer Spark verwendet nicht die konfigurierte mysql-Verbindung auf hive-site.xml
Das erste Problem war, dass die Methoden:
public SparkJobValidation validate(SparkContext sc, Config config) {
return SparkJobValid$.MODULE$;
}
@Override
public Object runJob(SparkContext jsc, Config jobConfig) {
//code
}
den veralteten SparkContext statt SparkSession als Parameter haben. Meine Lösung war Folgendes zu tun:
@Override
public Object runJob(SparkContext jsc, Config jobConfig) {
SparkSession ss = SparkSession.builder()
.sparkContext(jsc)
.enableHiveSupport()
.getOrCreate();
return ss.table("purchases").showString(20, true);
}
Ich habe kein Hive installiert, ich bin mit HiveSupport nur die Spark kommt und ich legte den Stock-site.xml unter $ SPARK_HOME/conf und arbeitet mit Funken -einreichen.
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>
Aber wenn ich dieses Glas als Auftrag aus dem Spark-Jobserver aus dieser Konfigurationsdatei ausführen nimmt nur die hive.metastore.warehouse.dir. Keine Verbindung mit MySQL db zum Lesen/Speichern der Hive metastore_db, und natürlich kann es die Tabellen auf der Standard-db nicht sehen. Ich habe die mysql-connector-java-5.1.40-bin.jar im $ SPARK_HOME/jars Ordner.
Was kann ich tun, um eine Verbindung zum Hive metastore_db in meiner MySQL DB herzustellen?
Willst du aus dem lokalen Dateisystem oder hdfs lesen? Soweit ich weiß, müssen Sie 'file: /// data/spark-warehouse /' für das lokale Dateisystem und 'hdfs: // host: port/data/spark-warehouse /' für hdfs schreiben. –
@SimonSchiff Ich möchte von einer lokalen Datei lesen, ich nehme Ihren Vorschlag und scheitere immer noch. – Jose