直接點擊pcakagejava
將程序進行在linux當中進行發佈mysql
客戶端模式:測試linux
spark-submit --class com.keduox.App \面試
--master yarn \sql
--deploy-mode client \apache
test_submit-1.0-SNAPSHOT.jar架構
一、 (在數據量很小的時候)速度快app
二、 依賴於jvm進程來執行的。因此不須要啓動hdfs、yarn、spark的。框架
集羣模式:生產環境、正式環境jvm
出現異常:Retrying connect to server: master/192.168.200.200:8032.
表示yarn沒有啓動:start-yarn.sh
java.net.ConnectException: Call From master/192.168.200.200 to master:9000
表示hdfs沒有啓動:start-dfs.sh
發佈以後出現錯誤:
yarn.ApplicationMaster: SparkContext did not initialize after waiting for 100000 ms
將代碼中的setMaster(local[*])刪除掉--à不推薦這樣子使用
刪掉以後,從新打包是能夠成功運行。
沒有成功的緣由是:由於spark在執行的時候,是採用分佈的執行,也就是每個節點執行的東西只是表明整個程序的一部分。代碼當中將輸出地寫成了file:///keduox/spark_out,看到的狀況是一會成功,一會失敗。
建議使用方式:
若是在一個模塊當中有多個spark的程序代碼時,創建將setMaster的值設置在properties文件當中。由於咱們會常常在local和yarn以前進行切換操做。
new SparkConf().setMaster("yarn-cluster")
2.1cdh配置spark
2.2讓yarn與spark進行關聯
在yarn點當中點擊如下內容
三、 改變spark任務的默認大小
重啓
3.1:直接package
java.sql.SQLException: No suitable driver 缺乏mysql的包
若是使用的是經過mysql 的方式的話,將沒法找到spark默認使用的驅動包。建議在map屬性當中加入:"driver" -> "com.mysql.jdbc.Driver"
java.lang.InstantiationException: org.apache.spark.sql.execution.datasources.jdbc.DriverWrapper
當咱們須要有數據,寫入到mysql的時候,也須要指定driver
val properties = new Properties()
properties.setProperty("driver","com.mysql.jdbc.Driver")
spark-submit --class com.keduox.HotCount \
--master yarn \
--deploy-mode cluster \
--jars /keduox/mysql-connector-java-5.1.38.jar \
hot_sales-1.0-SNAPSHOT.jar
3.2採用插件方式
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
</plugins>
發佈:
用默認方式打包的話,會將全部的maven中的包全打到jar當中,jar太大了。
能夠在打包的時間,將spark、hadoop、hive的包給他去掉
在pom.xml文件當中,對於不須要打包的依賴中當入:
<scope>provided</scope> ---可是要特別注意:打包完了以後,還須要進行編碼的話,須要將這個scope去掉,否則代碼編譯不經過
3.3能夠經過sc的方式加載包
sc.addJar("")
3.4 idea提供的打包方式
感興趣能夠加Java架構師羣獲取Java工程化、高性能及分佈式、高性能、深刻淺出。高架構。性能調優、Spring,MyBatis,Netty源碼分析和大數據等多個知識點高級進階乾貨的直播免費學習權限 都是大牛帶飛 讓你少走不少的彎路的 羣..號是:855801563 對了 小白勿進 最好是有開發經驗
注:加羣要求
一、具備工做經驗的,面對目前流行的技術不知從何下手,須要突破技術瓶頸的能夠加。
二、在公司待久了,過得很安逸,但跳槽時面試碰壁。須要在短期內進修、跳槽拿高薪的能夠加。
三、若是沒有工做經驗,但基礎很是紮實,對java工做機制,經常使用設計思想,經常使用java開發框架掌握熟練的,能夠加。
四、以爲本身很牛B,通常需求都能搞定。可是所學的知識點沒有系統化,很難在技術領域繼續突破的能夠加。
5.阿里Java高級大牛直播講解知識點,分享知識,多年工做經驗的梳理和總結,帶着你們全面、科學地創建本身的技術體系和技術認知!