日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

spark笔记

發布時間:2025/1/21 编程问答 86 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spark笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

傳遞第三方jars

當用spark-submit提交任務時,可以通過--jars選項傳遞第三方jars包,如果有多個jars,用逗號分開。

本地調試

用sbt打包好后,最好先在本地調試一下。可以把--master指定為local,然后把輸入輸出改為本地路徑即可。

使用scala執行class

這個跟spark關系不大,但是有時可能也用得著。如果你依賴多個jar包,需要通過-cp指定:

scala -cp "lib1.jar:lib2.jar:your_program.jar" -J-Xmx2g com.your.HelloWorld arg arg1 arg2

com.your.HelloWorld就在 your_program.jar里面。注意這里jar是用冒號分開的。不是逗號
-J 可以輸入jvm參數,比如指定heap大小為2G,-Xmx2g。

使用jdbc連接oracle等sql數據庫

在spark2中,在調用spark-shell或者spark-submit的時候,先通過--jars指定依賴的jdbc jar包,比如oracle就是$ORACLE_HOME/lib/ojdbc6.jar, 然后在代碼中,使用函數

val df = spark.read.format("jdbc") .options(Map("url" -> url,"driver" -> "oracle.jdbc.driver.OracleDriver","dbtable" -> "DW_MP_API_NEW_DEVICE")).load()

讀取表。

其中url的格式為:
jdbc:oracle:thin:username/passwd@ip_address:port:dbsid
thin之后的內容都是需要你來填寫的
driver則指定了驅動類型

map、flatMap、mapValues,mapPartitions的區別

  • map:把RDD的每個元素進行轉換,輸入、輸出數量不變,即一個輸入對應一個輸出,可能會改變key

  • flatMap:也是對RDD的每個元素進行轉換,但是輸出必須是TraversableOnce類型,即可遍歷的列表,可以輸出多個或者0個結果(即None)。這些結果會自動flatten,即拆分成很多單條記錄。也會改變key

  • mapValues: 和map類似,但它只是PairRDD的函數,僅僅對value進行變換,不會改變key。和flatMap類似,PairRDD也有flatMapValues函數,也是不會改變key的。

  • mapPartitions: 它是對RDD的一部分元素,即一個partition進行批量轉換,可以產生0或者多個結果,map在計算每個元素時都會啟動一個任務(setup work),而mapPartitions是給一批元素啟動一個任務,顯然mapPartitions更加高效一些。
    最終這些結果會添加到新RDD中。它接受的輸入輸出都必須是Iterator類型。Iterator如果使用過,必須重置到開始位置,否則后面再使用,如map、foreach函數,就會丟失數據!這是我之前踩到的一個坑。

join、leftOuterJoin的區別

跟SQL類似,他們都是PairRDD的函數,假設有A、B兩個rdd,有同樣類型的key,A.join(B)的結果是A和B的交集,value是pair(valueOfA,valueOfB),即把A、B相同key的結果匯總到一個pair中。A.leftOuterJoin(B)的結果是(valueOfA,Option(valueOfB)),即A中存在的記錄都會輸出,對于A中存在,B中不存在的記錄,pair的第二個元素就是None。A中不存在的記錄則不會輸出。

spark出現OOM(OutOfMemery)該怎么辦

OOM錯誤或者exit 143都是內存溢出的結果。一般遇到這種情況,通過repartition增加part數,就可以解決。
或者增加spark.executor.memory的大小。注意的是,如果使用了動態內存分配,這個參數可能會無效。

spark出現time out,或者多次失敗退出該怎么辦

通過調節time out時長和增加重試次數解決,具體如下:

--conf spark.task.maxFailures=8 \--conf spark.akka.timeout=3600 \--conf spark.network.timeout=3600 \--conf spark.executor.heartbeatInterval=300 \--conf spark.yarn.max.executor.failures=50 \--conf spark.rpc.retry.wait=60

在提交spark任務時,調整如上幾個參數,timeout單位是秒。
增加重試次數,也能提高一定的穩定性。

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的spark笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。