2017-04-14 37 views

回答

1

如果您可以給出一些代碼片段並解釋如何構建jar並在羣集上運行它,那麼這將會更有幫助。另外,什麼是執行模式(客戶端/集羣)?因爲classNotFoundException的可能原因有時可能與您如何進行spark-submit調用有關。

以下代碼適用於我。你可以試試看。

創建以下斯卡拉Maven項目中階對象文件中的日食: 代碼是:

import org.apache.spark.SparkContext 
import org.apache.spark.SparkContext._ 
import org.apache.spark.sql._ 
import org.apache.spark.sql.SQLContext 
import org.apache.spark.SparkConf 

object SparkPGSQLConnect { 

case class Projects(ID:Int, Name:String, Address:String) 

def main(args:Array[String]) { 
     val conf = new SparkConf().setMaster(「local[*]」).setAppName("PostGreSQLConnection") 
     //val conf = new SparkConf().setMaster("yarn-cluster").setAppName("PostGreSQLConnection") 
    val sc = new SparkContext(conf) 
    val sqlContext= new org.apache.spark.sql.SQLContext(sc) 

    import sqlContext.implicits._ 

    val jdbcDF = sqlContext.load("jdbc", Map(
     "url" -> "jdbc:postgresql:tempdb?user=******&password=******」, 
     "dbtable" -> 「employee」)) 

    jdbcDF.show(false) 
    } 
} 

在那之後,我上面的代碼在本地測試基於Eclipse首先要驗證代碼工作正常。 然後,使用maven來構建jar。

最後下面跑從MAC終端命令: 在本地模式下: ./spark-submit --class SparkPGSQLConnect --master本地[*] --driver級路徑的PostgreSQL-42.0.0.jre6。 jar〜/ SPGTestClient.jar

在集羣模式下: ./spark-submit --class SparkPGSQLConnect - 主紗--deploy-mode集羣--conf spark.executor.memory = 200 mb --conf spark。 executor.cores = 2 --conf「spark.driver.extraClassPath = postgresql-42.0.0.jre6.jar」〜/ SPGTestCluster.jar

我需要明確的一些罐子是: postgresql-42.0.0 .jre6。 jar(這是我需要的,因爲我得到:線程「主」中的異常java.sql.SQLException:嘗試從我的mac終端做spark-submit時沒有合適的驅動程序錯誤)。

相關問題