Learning Spark——使用spark-shell運行Word Count

來源:互聯網
上載者:User

標籤:而不是   處理   i++   view   tle   多行   param   word   ram   

在hadoop、zookeeper、hbase、spark叢集環境搭建 中已經把環境搭建好了,工欲善其事必先利其器,現在器已經有了,接下來就要開搞了,先從spark-shell開始揭開Spark的神器面紗。

spark-shell是Spark的命令列介面,我們可以在上面直接敲一些命令,就像windows的cmd一樣,進入Spark安裝目錄,執行以下命令開啟spark-shell:

bin/spark-shell --master spark://hxf:7077 --executor-memory 1024m --driver-memory 1024m --total-executor-cores 4

executor-memory是slave的記憶體,driver-memory是master的記憶體,total-executor-cores是所有的核心數

終端顯示如,可以看到spark-shell已經幫我們初始化了兩個變數sc、spark,sc是Spark context,spark是Spark session,沒吃過豬肉見過豬跑,像這些包含context啊session啊不用想就很重要,同樣Spark的執行就是靠這倆變數,目前先混個眼熟,日後再說

Spark管理頁面顯示如:

OK,現在我們開始動手敲第一個例子,統計Spark目錄下 README.md 這個檔案中各個單詞出現的次數:

首先給出完整的代碼,方便大家有一個整體的思路:

val textFile = sc.textFile("file:/data/install/spark-2.0.0-bin-hadoop2.7/README.md")val wordCounts = textFile.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey((a, b) => a + b)wordCounts.collect()

代碼很簡單,但是第一次見到可能不是很理解,下面進行講解

1. Spark讀取未經處理資料的方式

首先讀取 README.md:

val textFile = sc.textFile("README.md")

這條代碼是讀取未經處理資料轉化為Spark自己的資料格式RDD,一般讀取未經處理資料有兩種方式

1、測試用法:調用SparkContext的parallelize方法

val rdd = sc.parallelize(Array(1 to 10))

這樣就擷取到了1到10的數組,多用於測試程式,正式開發不用這種

2、正式用法:所有Hadoop可以使用的資料來源Spark都可以使用,當然我們最常用的還是SparkContext的textFile方法,如讀取Hdfs上的檔案:

val rdd = sc.parallelize("hadoop://hxf:9000/test/test.log")
2. Spark的基礎資料類型RDD

上面通過textFile得到的結果叫做RDD,是Spark的基礎資料類型。

RDD是Resillient Distributed Dataset的簡稱,意思是彈性分布式資料集,這個名字不是太好理解,但是我們可以從字面上瞭解到RDD是分布式的、並且是資料集合,假設分布式系統下有多個檔案,這些檔案有很多行,RDD指的是所有這些檔案所有行的集合,而不是單獨某一行。所以我們對RDD進行的一系列操作都是對整個集合進行的操作,並且Spark是將整個RDD放在記憶體中進行處理,而不是像MapReduce那樣放在磁碟中,所以Spark的運算速度才會比MapReduce快。

接下來繼續講解代碼:

val wordCounts = textFile.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey((a, b) => a + b)wordCounts.collect()

最後的結果顯示各個單詞出現的次數,代碼中的flatMap、map、reduceByKey是RDD的轉化操作,collect是RDD的行動操作,不理解沒關係,後文詳解。這一節先暫時講到這裡,欲聽後事如何,請聽下回分解。

Learning Spark——使用spark-shell運行Word Count

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.