2016-12-01 7 views
0

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 
} 

パラメータとして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); 
} 

私はハイブは、私はちょうどスパークが付属していますHiveSupportを使用していますインストールされていないと私は$ SPARK_HOME/confの下のハイブ-site.xmlのを入れて、それがスパークして働いている必要があり - 提出する。

ハイブ-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> 

しかし、私は、この設定ファイルからスパークジョブサーバからジョブとしてこのjarファイルを実行したときにのみhive.metastore.warehouse.dirをとります。 Hive metastore_dbを読み書きするためにMySQLデータベースと接続することはありません。もちろん、デフォルトのdbのテーブルは表示されません。 $ SPARK_HOME/jarsフォルダにmysql-connector-java-5.1.40-bin.jarがあります。

私のMySQL DBにあるHive metastore_dbに接続するにはどうすればよいですか?

public class My_SparkHIVEJob implements JHiveJob<String> { 


@Override 
    public String run(HiveContext c, JobEnvironment je, Config config) { 
     /* 
      JOB CODE... 
     */ 
    } 

    @Override 
    public Config verify(HiveContext c, JobEnvironment je, Config config) { 
     return config; 
    } 

はとても簡単に思えますが、いくつかのヶ月:私は、コンテキストの作成にcontext-factory=spark.jobserver.context.JavaHiveContextFactoryを使用する必要がJavaを使用していますし、次のように私はクラスを実装しているとして、代わりに基本的なコンテキストをハイブコンテキストを使用して

+0

ローカルファイルシステムまたはhdfsから読み込みますか?私の知る限り、ローカルファイルシステムには 'file:/// data/spark-warehouse /'、hdfsには 'hdfs:// host:port/data/spark-warehouse /'と書かなければなりません。 –

+0

@SimonSchiffローカルファイルから読みたい、私はあなたの提案を取って、まだ失敗しています。 – Jose

答えて

0

前にSpark - Spark Jobserverで始まったときそれほどではありませんでした:-)

関連する問題