今天完成了spark基礎實驗四,
(1) 熟悉spark 的rdd 基本操作及鍵值對操作;
(2) 熟悉使用rdd 程式設計解決實際具體問題的方法。
作業系統:ubuntu16.04 spark 版本:2.1.0
請根據給定的實驗資料,在 spark-shell 中通過程式設計來計算以下內容:
(1) 該系總共有多少學生;
val lines = sc.textfile("file:///opt/software/data01.txt")
lines.map(row=>row.split(",")(0)).distinct().count
(2) 該系共開設來多少門課程;
lines.map(row=>row.split(",")(1)).distinct().count
(3) tom 同學的總成績平均分是多少;
lines.filter(row=>row.split(",")(0)=="tom").map(row=>(row.split(",")(0),row.split(",")(2).toint))
.mapvalues(x=>(x,1))
.reducebykey((x,y) => (x._1+y._1,x._2 + y._2))
.mapvalues(x => (x._1 / x._2))
.collect()
(4) 求每名同學的選修的課程門數;
lines.map(row=>(row.split(",")(0),1))
.reducebykey((x,y)=>x+y)
.collect
(5) 該系database 課程共有多少人選修;
lines.filter(row=>row.split(",")(1)=="database").count
(6) 各門課程的平均分是多少;
lines.map(row=>(row.split(",")(1),row.split(",")(2).toint))
.mapvalues(x=>(x,1))
.reducebykey((x,y) => (x._1+y._1,x._2 + y._2))
.mapvalues(x => (x._1 / x._2))
.collect()
(7) 使用累加器計算共有多少人選了 database 這門課。
val accum = sc.longaccumulator("accumulateor")
lines.filter(row=>row.split(",")(1)=="database")
.map(row=>(row.split(",")(1),1))
.values
.foreach(x => accum.add(x))
accum.value
對於兩個輸入檔案a 和 b,編寫 spark 獨立應用程式,對兩個檔案進行合併,並剔除其中重複的內容,得到乙個新檔案 c。下面是輸入檔案和輸出檔案的乙個樣例,供參考。
輸入檔案a 的樣例如下:
20170101
x20170102
y20170103
x20170104
y20170105
z20170106
z輸入檔案b 的樣例如下:
20170101
y20170102
y20170103
x20170104
z20170105
y根據輸入的檔案a 和b 合併得到的輸出檔案c 的樣例如下:
20170101
x20170101
y20170102
y20170103
x20170104
y20170104
z20170105
y20170105
z20170106
z
每個輸入檔案表示班級學生某個學科的成績,每行內容由兩個字段組成,第乙個是學生名字,第二個是學生的成績;編寫 spark 獨立應用程式求出所有學生的平均成績,並輸出到乙個新檔案中。下面是輸入檔案和輸出檔案的乙個樣例,供參考。
algorithm 成績:
小明 92
小紅 87
小新 82
小麗 90 database 成績:
小明 95
小紅 81
小新 89
小麗 85 python 成績:
小明 82
小紅 83
小新 94
小麗 91
平均成績如下:
(小紅,83.67)
(小新,88.33)
(小明,89.67)
(小麗,88.67)
2021 2023年寒假學習進度08
今天繼續學習scala 今天主要了解了泛型的使用,並且學習了vue,後續會總結vue的學習 1 協變和逆變 1 語法 class mylist t class mylist t class mylist t 不變 2 說明 協變 son 是 father 的子類,則 mylist son 也作為 m...
2021 2023年寒假學習進度09
今天學習了scala的函式式程式設計 函式式程式設計 1 函式基礎 1.1 函式基本語法 1 基本語法 2 案例實操 需求 定義乙個函式,實現將傳入的名稱列印出來。def main args array string unit 2 函式呼叫 函式名 引數 f hello world 1.2 函式和方...
寒假學習進度
今天就是踐行spark的安裝了。安裝spark 配置檔案spark env.sh 驗證spark是否安裝成功。grep 命令進行過濾。下面是關於hdfs的命令 上傳檔案 hdfs dfs put src dest 從本地的src位置上傳到hdfs的dest位置,src可以有多個,空格隔開 複製檔案 ...