1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        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的正方形。之后我們開始隨機向這個正方形領域描點。隨著我們描點的數(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個任務并行計算。每個執(zhí)行器都有自己的唯一id,每個任務也有自己的唯一id。然后每個任務由指定的執(zhí)行器進行執(zhí)行。最后得出結果為Pi is roughly 3.140751140751141??梢娺€不太準確。那么我們接下來繼續(xù)加碼計算量。

        4ebe1a100553f9cb10b22aad7d03f194.webp

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

        接下來我們輸入100參數(shù),1000萬條數(shù)據(jù)進行計算??磥砣蝿樟窟€是不足,計算結果還未接近

        Pi is roughly 3.1418151141815116

        715364e9f4d8ae00756d2bcfce0ee1a1.webp

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

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

        Pi is roughly 3.1417156714171566

        09127629d0205d1eba1d32cbe617ba0b.webp

        拼了

        這次直接開啟10000個任務,算它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個任務,10億次計算細節(jié)如下。

        5207b53c6fa3cdf7083c8120596322d9.webp

        指定核心數(shù)量

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

        99efb525bdc1af8b8fbc1e4f43aed1bc.webp4f8b2cd29e0c6904d90c82886df64dab.webp

        指定執(zhí)行器核心


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

        46644219b5d37b874cebccdb0ebabff2.webp


        瀏覽 54
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

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

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            中文字幕日韩人妻在线视频 | 国产熟女乱伦视频 | 欧美日韩精品A∨一区二区三区电影 | 国产黄色录相 | 无码av一级毛片免费网站 | 亚洲国产又黄又爽女人高潮的 | 爱操B| 欲女视频麻豆 | 在线不卡视频 | 小黄片免费下载 |