2021 2023年寒假學習進度19

2022-09-18 23:03:08 字數 2445 閱讀 1220

今天完成了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可以有多個,空格隔開 複製檔案 ...