Spark系列(二) Spark Shell各種操作及詳細說明

來源:互聯網
上載者:User

標籤:style   blog   http   io   ar   java   for   strong   檔案   

  • 並行化scala集合(Parallelize)

 

//載入資料1~10

val num=sc.parallelize(1 to 10)

//每個資料項目乘以2,注意 _*2記為一個函數(fun)

val doublenum = num.map(_*2)

//記憶體快取資料

doublenum.cache()

//過濾資料,每個資料項目 % 3 為0的資料為結果集;

val threenum = doublenum.filter(_ % 3 == 0)

//釋放緩衝

threenum.unpersist()

//出發action操作根據前面的步驟構建DAG並執行,以資料的形式返回結果集;

threenum.collect

//返回結果集中的第一個元素

threenum.first

//返回結果集中的前三個元素

threenum.take(3)

//對資料集中的元素個數統計

threenum.count

//查看以上步驟經過的RDD轉換過程

threenum.toDebugString

結果:

 

  • K-V類型資料示範

// 載入資料

val kv1=sc.parallelize(List(("A",1),("B",2),("C",3),("A",4),("B",5)))

//根據資料集中的每個元素的K值對資料排序

kv1.sortByKey().collect

kv1.groupByKey().collect //根據資料集中的每個元素的K值對資料分組

kv1.reduceByKey(_+_).collect

注意:sortByKey 、groupByKey 、reduceByKey之間的結果集的區別;

val kv2=sc.parallelize(List(("A",4),("A",4),("C",3),("A",4),("B",5)))

kv2.distinct.collect // distinct操作去重

kv1.union(kv2).collect //kv1與kv2聯合

kv1.join(kv2).collect //kv1與kv2兩個資料連線,相當於表的關聯

val kv3=sc.parallelize(List(List(1,2),List(3,4)))

kv3.flatMap(x=>x.map(_+1)).collect //注意這裡返回的資料集已經不是K-V類型了

 

  • HDFS檔案操作示範

先將clk.tsv和reg.tsv檔案上傳到hdfs,檔案格式如下;

 

// 定義一個對日期格式化的常量

val format = new java.text.SimpleDateFormat("yyyy-MM-dd")

// scala文法,定義Register類(根據reg.tsv資料格式)

case class Register (d: java.util.Date, uuid: String, cust_id: String, lat: Float,lng: Float)

// scala文法,定義Click類(根據clk.tsv資料格式)

case class Click (d: java.util.Date, uuid: String, landing_page: Int)

// 載入hdfs上的檔案reg.tsv並將每行資料轉換為Register對象;

val reg = sc.textFile("hdfs://chenx:9000/week2/join/reg.tsv").map(_.split("\t")).map(r => (r(1), Register(format.parse(r(0)), r(1), r(2), r(3).toFloat, r(4).toFloat)))

// 載入hdfs上的檔案clk.tsv並將每行資料轉換為Click對象;

val clk = sc.textFile("hdfs://chenx:9000/week2/join/clk.tsv").map(_.split("\t")).map(c => (c(1), Click(format.parse(c(0)), c(1), c(2).trim.toInt)))

reg.join(clk).collect

Spark系列(二) Spark Shell各種操作及詳細說明

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.