<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          spark學習筆記3之spark樣例分析

          共 629字,需瀏覽 2分鐘

           ·

          2022-03-19 11:33

          github樣例

          一開始自己寫案例還是比較費勁的,我們還是遵照那個原則,先大步快跑,搞定全局,再回頭查缺補漏。

          https://github.com/apache/spark/tree/master/examples

          計算圓周率Pi

          scala代碼如下:

          /**
          * @author Ted
          * @date 2022/2/9 15:48
          * @version 1.0
          */
          object SparkPi {
          def main(args: Array[String]): Unit = {
          def main(args: Array[String]): Unit = {
          val spark = SparkSession
          .builder
          .appName("Spark Pi")
          .getOrCreate()
          val slices = if (args.length > 0) args(0).toInt else 2
          val n = math.min(100000L * slices, Int.MaxValue).toInt // avoid overflow
          val count = spark.sparkContext.parallelize(1 until n, slices).map { i =>
          val x = random * 2 - 1
          val y = random * 2 - 1
          if (x*x + y*y <= 1) 1 else 0
          }.reduce(_ + _)
          println(s"Pi is roughly ${4.0 * count / (n - 1)}")
          spark.stop()
          }
          }
          }

          邏輯分析

          我們都知道圓的面積公式為?197ad2b2454bcac1c4222d5de6e3d989.webp?。此時我們畫一個半徑為1的圓。然后再往圓上套一個邊長為2的正方形。之后我們開始隨機向這個正方形領(lǐng)域描點。隨著我們描點的數(shù)據(jù)量越來越大,在圓里面的點和在正方形里的點的數(shù)量之比就會越來越趨近于一個常數(shù)。而這個常數(shù)其實也近似等于 圓和正方形的面積之比。如下:

          4a05132a42b00cb333a50b789a296ccb.webp

          由于我們的圓半徑為1,正方形邊長為2。所以就會得出

          4b6bc4f92feefa54798d2fc2bda5a543.webp


          園中的點用代碼表示為如下,當x2+y2小與1時,點肯定落在圓內(nèi),取值1,讓count總數(shù)+1。

          a50f638ba8c22908b7983773263192d9.webp

          運行代碼

          由于樣例函數(shù)的jar包在spark安裝包中存在,我們直接用如下命令運行程序,并指定參數(shù)。本次指定10個分區(qū),100萬條數(shù)據(jù)。

          ../../bin/spark-submit --master spark://node1:7077,node2:7077  --class org.apache.spark.examples.SparkPi  ./spark-examples_2.11-2.3.4.jar 10
          e07a3a3c2241d3c1e8e1c8726b2c44d4.webp

          會從后臺看到已經(jīng)運行了一個spark程序,核心數(shù)12,執(zhí)行速度6秒。執(zhí)行過程如下,啟動了10個任務(wù)并行計算。每個執(zhí)行器都有自己的唯一id,每個任務(wù)也有自己的唯一id。然后每個任務(wù)由指定的執(zhí)行器進行執(zhí)行。最后得出結(jié)果為Pi is roughly 3.140751140751141??梢娺€不太準確。那么我們接下來繼續(xù)加碼計算量。

          4ebe1a100553f9cb10b22aad7d03f194.webp

          擴大數(shù)據(jù)量

          接下來我們輸入100參數(shù),1000萬條數(shù)據(jù)進行計算。看來任務(wù)量還是不足,計算結(jié)果還未接近

          Pi is roughly 3.1418151141815116

          715364e9f4d8ae00756d2bcfce0ee1a1.webp

          繼續(xù)擴大數(shù)據(jù)量

          本次我們開啟1000個任務(wù),給他一個億??梢钥吹?,147和148已經(jīng)不夠用了,把他的兄弟146也叫了起來。但是還是不給力啊。

          Pi is roughly 3.1417156714171566

          09127629d0205d1eba1d32cbe617ba0b.webp

          拼了

          這次直接開啟10000個任務(wù),算它10億次。終于看到了我腦海中記憶到的那個數(shù)字了。

          Pi is roughly 3.141595919141596

          859c81ebba7d874f71a14a0ab79c60fa.webp

          運行腳本


          接下來,我們直接編寫一個運行腳本來運行我們的spark計算程序。當然平時我們需要養(yǎng)成一個習慣,將這些運行程序收集到一個目錄下邊。例如如下,我們在root家目錄創(chuàng)建于給sparkexe目錄。將我們的腳本放到里面。

          13d5f9279071da9150b1c72ebf024626.webp

          然后我們執(zhí)行如下命令,就可以了。

          . submit 'org.apache.spark.examples.SparkPi' "/opt/bigdata/spark-2.3.4-bin-hadoop2.6/examples/jars/spark-examples_2.11-2.3.4.jar" 100
          bcaee23503a5cf902b873ff5176a3078.webp

          10000個任務(wù),10億次計算細節(jié)如下。

          5207b53c6fa3cdf7083c8120596322d9.webp

          指定核心數(shù)量

          我們還可以指定spark任務(wù)執(zhí)行中可以申請的核心數(shù)量,上述過程都直接申請了12個核心,每個執(zhí)行器4個核心。接下來我們指定核心數(shù)量為6個。那么每個執(zhí)行器會分配兩個核心。

          99efb525bdc1af8b8fbc1e4f43aed1bc.webp4f8b2cd29e0c6904d90c82886df64dab.webp

          指定執(zhí)行器核心


          如果我們制定每個執(zhí)行器只能擁有一個核心,同時我們指定本次任務(wù)分配12個核心。那么就會出現(xiàn)12個執(zhí)行器。

          46644219b5d37b874cebccdb0ebabff2.webp


          瀏覽 54
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  一道本高清一二三区视频 | 亚洲观看黄 色 网 | 国产对白视频 | 欧美亲子乱婬性XXX | 免费黄色小视频网站 |