<pre id="lnnn7"><strike id="lnnn7"></strike></pre>

          <track id="lnnn7"></track><pre id="lnnn7"></pre>
          <track id="lnnn7"></track>

          <p id="lnnn7"></p>
          <track id="lnnn7"></track>
            <track id="lnnn7"></track>

            教育行業A股IPO第一股(股票代碼 003032)

            全國咨詢/投訴熱線:400-618-4000

            創建RDD的2種方法【大數據開發】

            更新時間:2022年03月07日18時36分 來源:傳智教育 瀏覽次數:

            Spark RDD 編程的程序入口對象是SparkContext對象(不論何種編程語言)。只有構建出SparkContext, 基于它才能執行后續的API調用和計算 。本質上, SparkContext對編程來說, 主要功能就是創建第一個RDD出來。

            RDD的創建可以通過2種方式, 通過并行化集合創建( 本地對象轉分布式RDD )和通過讀取外部數據源( 讀取文件)創建。

            1.并行化創建

            并行化創建是指將本地集合轉向分布式RDD,這一步的創建是分布式的開端,將本地集合轉化為分布式集合。

            API如下

            rdd=sparkcontext.parallelize(參數1,參數2)
            #參數1集合對象即可,比如list
            #參數2分區數
            完整代碼:
            # coding: utf8
            
            from pyspark import SparkConf, SparkContext
            
            if __name__ = '__main__': 
            	# e.構建Spark執行環境
            	conf = SparkConf().setAppName("create rdd").\
            	    setMaster("local[*]"]
            	sc = SparkContext(conf = conf)
            
            # sc對象的parallelize方法, 可以將本地集合轉換成RDD返回給你
            	data = [1, 2, 3, 4, 5, 6, 7, 8, 9]
            	rdd = sc.parallelize(data, numSlices = 3)
            	
            	print(rdd.collect())

            獲取RDD分區數返回值是Int數字:getNumPartitions API

            用法
            rdd.getNumPartitions()

            2.讀取文件創建

            textFile API

            這個API可以讀取本地數據,也可以讀取hdfs數據

            使用方法:

            sparkcontext.textFile(參數1,參數2)
            #參數1,必填,文件路徑支持本地文件支持HDFS也支持一些比如S3協議
            #參數2,可選,表示最小分區數量。
            #注意:參數2話語權不足,spark有自己的判斷,在它允許的范圍內,參數2有效果,超出spark允許的范圍,參數2失效
            完整代碼
            1f __nane__ = '__main__:
               # B.構建Spark執行環境
               conf = SparkConf().setAppNane("create rdd").\
                  setMaster("local[*]")
               sc = SparkContext(conf=conf)
               # textFile API 讀取文件
               rdd = sc.textFile(".…/data/words.txt", 1000)
               print(rdd.getNumPartitions())
            
               rdd2 = sc.textFile("hdfs://nodel:8020/input/words.txt", 1888)
               #最小分區數給了1060,但是實際就開了85個, spark沒有理會你要求最少1008的要求,而是盡是多開。
               print(rdd2.getNumPartitions())
               
               print(rdd2.collect())

            注意:textFile除非有很明確的指向性,一般情況下,我們不是指分區參數。

            讀取文件的API,有個小文件讀取專用場景:適合讀取一堆小文件
            用法:

             sparkcontext.wholeTextFiles(參數1,參數2)
            #參數1,必填,文件路徑支持本地文件支持HDFS也支持一些比如S3協議
            #參數2,可選,表示最小分區數量。
            #注意:參數2話語權不足,這個API分區數量最多也只能開到文件數量

            這個API偏向于少量分區讀取數據,因為這個API表明了自己是小文件讀取專用,那么文件的數據很小。分區很多,導致shuffle的幾率更高.所以盡量少分區讀取數據。






            猜你喜歡:

            RDD在Spark中是如何運行的?

            DataFrame是什么意思?與RDD相比有哪些優點?

            RDD為什么要進行數據持久化?持久化操作步驟

            兩種RDD的依賴關系介紹

            傳智教育python+大數據開發培訓課程

            0 分享到:
            丰满少妇高潮大喊大叫

              <pre id="lnnn7"><strike id="lnnn7"></strike></pre>

                    <track id="lnnn7"></track><pre id="lnnn7"></pre>
                    <track id="lnnn7"></track>

                    <p id="lnnn7"></p>
                    <track id="lnnn7"></track>
                      <track id="lnnn7"></track>