用scala寫乙個入門的單機版wordcount

2021-08-28 02:47:05 字數 1280 閱讀 7468

1、這裡準備乙個字串list作為輸入資料來源

val lines = list("hello tom hello jerry", "hello jerry", "hello kitty")

2、wordcount

2.1、將每乙個字串按照空格切分

lines.map(_.split(" "))

2.2、將切分後的陣列取掉,直接將每乙個單詞放在外層的list中

lines.map(_.split(" ")).flatten

2.3、前面兩個步驟可以合成乙個步驟完成(2.1+2.2)

lines.flatmap(_.split(" "))

結果: list[string] = list(hello, tom, hello, jerry, hello, jerry, hello, kitty)

2.4、將每乙個單詞和「1」組成元組

.map((_, 1))

結果: list[(string, int)] = list((hello,1), (tom,1), (hello,1), (jerry,1), (hello,1), (jerry,1), (hello,1), (kitty,1))

2.5、分組

.groupby(_._1)

結果:scala.collection.immutable.map[string,list[(string, int)]] = map(tom -> list((tom,1)), kitty -> list((kitty,1)), jerry -> list((jerry,1), (jerry,1)), hello -> list((hello,1), (hello,1), (hello,1), (hello,1)))

2.6、將map中的value中的元組的size

方法一:.map(t => (t._1, t._2.size))

方法二:.mapvalues(_.foldleft(0)(_+_._2))

2.7、排序

.tolist.sortby(_._2).reverse

可以用一步完成:

方法一:lines.flatmap(_.split(" ")).map((_, 1)).groupby(_._1).map(t => (t._1, t._2.size)).tolist.sortby(_._2).reverse

方法二:lines.flatmap(_.split(" ")).map((_, 1)).groupby(_._1).mapvalues(_.foldleft(0)(_+_._2))

eve單機版一鍵端 人人都能架設的單機版傳奇

傳奇已經發展了20年,從2001年盛大 到如今各種復古傳奇,達叔傳奇什麼的簡直不要太多。但我們一直都是扮演玩家的角色,有沒有想過自己也可以架設單機版傳奇。從更高的視角來看待自己玩了多年的傳奇遊戲。從介面來看就知道這是玩單機遊戲倉的端 電腦遊戲手機不能遊戲 它的使用方法非常簡單 1.安裝服務端到d盤 ...

乙份完整的單機版slurm部署

場景使用 一台8卡gpu伺服器,想要多人使用,每次提交任務可以使用一塊卡 也可以使用兩塊,具體需要配置 比如第9個人使用時就要排隊,等前面8個人用完才可以使用gpu做計算,基於這樣的乙個情況,我研究了下slurm,花了兩天時間終於實現了我需要的功能,以下是我所有的部署操作,乙份很完整的單機slurm...

用golang寫乙個proxy

我複雜的網路環境中,proxy是個很有用的工具,我們可以通過proxy 幫我們完成網路流量的 這個proxy得先能接收請求,所以這裡先啟動乙個tcp的監聽,獲取請求 func s server start glog.infof proxy listen in s,waiting for connec...