偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

痛苦調(diào)優(yōu)10小時(shí),我把 Spark 腳本運(yùn)行時(shí)間從15小時(shí)縮短到12分鐘!

開(kāi)發(fā) 架構(gòu) Spark
周一我就有個(gè)困惑,還寫(xiě)成文章了:如何從 Spark 的 DataFrame 中取出具體某一行,里面提了自己猜想的幾種解決方案 沒(méi)想到這么快就要面對(duì)這個(gè)問(wèn)題了,我用小孩子都聽(tīng)得懂的例子描述一下我在干什么。

[[412333]]

周一我就有個(gè)困惑,還寫(xiě)成文章了:如何從 Spark 的 DataFrame 中取出具體某一行,里面提了自己猜想的幾種解決方案。

沒(méi)想到這么快就要面對(duì)這個(gè)問(wèn)題了,我用小孩子都聽(tīng)得懂的例子描述一下我在干什么。

簡(jiǎn)單生動(dòng)小例子

說(shuō)一所小學(xué)有好幾個(gè)班級(jí),現(xiàn)在要 以班級(jí)為單位 給孩子們按照身高進(jìn)行排序,并且記錄下來(lái)。

問(wèn)題就是,全學(xué)校只有一條測(cè)身高的尺子,而且因?yàn)楹⒆觽冞^(guò)于頑劣等主客觀因素,測(cè)量身高、按身高排序、登記身高這些過(guò)程,必須在一間教室里進(jìn)行。 沒(méi)有被輪到測(cè)量的班級(jí),就在操場(chǎng)活動(dòng)。

而最讓老師感到頭疼的是:組織孩子們進(jìn)教室這一過(guò)程。測(cè)身高呀、記錄呀、排序呀,都用不了幾分鐘,唯獨(dú)讓孩子們進(jìn)教室這件事,要讓老師們使出九牛二虎之力,而且特別耗時(shí)。

孩子們快進(jìn)教室吧,求求了!

好消息是,組織一個(gè)班進(jìn)教室,和組織一百個(gè)班同時(shí)進(jìn)教室,花費(fèi)的時(shí)間差不多。 因此,一般來(lái)講,老師都是直接把所有學(xué)生全部叫進(jìn)這間教室來(lái)的。

但是我面臨一個(gè)棘手的情況。我的操場(chǎng)上,有 2200 個(gè)班級(jí),每個(gè)班級(jí)有 16 萬(wàn)人。我的教室也很大,但是肯定裝不下 2200 × 16 萬(wàn)人 ≈ 3 億人。

于是我就想著,我一個(gè)班一個(gè)班測(cè),這是最直觀的、最好管理的。

“來(lái),一班,進(jìn)教室!”...花了十幾分鐘才都叫進(jìn)來(lái)...花了幾十秒就都測(cè)好了、排好序了、記錄好了...“好了!一班出去!二班進(jìn)來(lái)!”...

如此往復(fù),等到了第 2200 個(gè)班的時(shí)候,已經(jīng)過(guò)去了快一個(gè)月...

內(nèi)位看官講話了:你把他們都叫進(jìn)來(lái)不就行了?反正前面有條件:『組織一個(gè)班進(jìn)教室,和組織一百個(gè)班同時(shí)進(jìn)教室,花費(fèi)的時(shí)間差不多。』

有道理,這就是我上午在做的事:把教室修大一點(diǎn)。

我請(qǐng)了土地局的人、請(qǐng)了工程師、請(qǐng)了施工隊(duì),嘗試了各種方法,每次費(fèi)盡力氣修好(能容納 5 億人那種),教室就因?yàn)楦鞣N原因塌了。

唉!我計(jì)算過(guò),理論上明明可以建成的呀!

我就不甘心,就一直嘗試,反反復(fù)復(fù),然后幾小時(shí)過(guò)去了。

這時(shí)又有位看官講話了:別修教室了,你把孩子們分成幾批,一次叫幾個(gè)班進(jìn)教室不就得了!

有道理,可是這樣原有的管理邏輯需要改一部分,著實(shí)花費(fèi)了我一些時(shí)間。此外,還花了大量時(shí)間 debug 。

我初步設(shè)置為 100 班為一批進(jìn)教室:

  • 原來(lái)我需要做『喊孩子們進(jìn)教室』這件事 2200 次(每個(gè)班含一次)
  • 現(xiàn)在我只做『喊孩子們進(jìn)教室』這件事 22 次,你看看,是不是快了 100 倍

對(duì)照解釋

上面其實(shí)就是我做的事的簡(jiǎn)化版,其中:

「教室」就是計(jì)算機(jī)的「內(nèi)存」,你得把數(shù)據(jù)拿進(jìn)內(nèi)存才能對(duì)其進(jìn)行排序什么的計(jì)算

「進(jìn)教室」就是計(jì)算機(jī)的「IO操作」,計(jì)算機(jī)的內(nèi)存很貴,一般的電腦都是 8G、16G 這種,而硬盤相對(duì)便宜,有 256G、512G,甚至幾個(gè) T 之多,因此數(shù)據(jù)一般都放在硬盤上,需要用時(shí),在讀到內(nèi)存里,這個(gè)讀的過(guò)程叫做「IO操作」

「IO操作」相比計(jì)算,相當(dāng)耗費(fèi)時(shí)間

老師干活很利索,就是孩子們進(jìn)教室有點(diǎn)費(fèi)勁

以下是我的工作日志節(jié)選(脫敏版):

首先我是『把每個(gè)班級(jí)單獨(dú)叫進(jìn)教室』,很耗時(shí)。

7月19日早上大概9:30開(kāi)始的,到7月20日半夜0:23結(jié)束,一共 2200 列,每一列都有 160000 個(gè)數(shù)據(jù),都要進(jìn)行排序操作,還涉及到 IO 操作,一共用時(shí) 15 小時(shí)。這其中用時(shí)為 IO時(shí)間 和 對(duì)每一列處理時(shí)間:

而其中,相比 IO ,計(jì)算時(shí)間(比如排序)可以忽略不計(jì),因此時(shí)間可以記為

于是我想著,能不能『把所有班級(jí)一下全叫進(jìn)教室』,畢竟:

  • 我的機(jī)器內(nèi)存有 8G
  • 數(shù)據(jù)頂多使用 4G

我開(kāi)始著手「擴(kuò)大教室」,嘗試了很多,和配置文件 .conf 、 spark-shell 、 spark-env.cmd 、 JVM -Xmx4g 等等這種資料、操作大戰(zhàn)了一上午,無(wú)果。

一些截圖: .conf

我認(rèn)為我的嘗試產(chǎn)生了效果,因?yàn)樵械腻e(cuò)誤不報(bào)了, collect 這個(gè)過(guò)程也能走完(孩子們都能進(jìn)教室,之前是進(jìn)不去的),但是一旦涉及到操作(collect 結(jié)束后會(huì)卡頓很久,無(wú)法返回應(yīng)有的 Array),就會(huì)爆 JVM heap 。此外,經(jīng)過(guò)一些其他調(diào)整后,不爆 heap 了,爆 GC overhead limit exceeded 這種垃圾回收問(wèn)題。

那我有理由懷疑是性能被硬件限制了。

于是我考慮:『把孩子們分成幾批,一次叫幾個(gè)班進(jìn)教室』。

有很多 bug ,我最后選擇的是一次叫 100 個(gè)班級(jí),用時(shí)大概 12 分鐘。

“調(diào)優(yōu)”結(jié)束。

總體來(lái)看,思路上幾乎沒(méi)什么難度,花費(fèi)了這么多時(shí)間,主要是因?yàn)椋?/p>

  • 不甘心自己的某個(gè)思路不可行,一股腦硬試下去
  • 經(jīng)驗(yàn)不足

啊!要是用時(shí)15小時(shí)的代碼不是1個(gè)月前的我寫(xiě)的,而是別人寫(xiě)的,那我把他調(diào)到 12 分鐘,還顯得我蠻厲害的?? 開(kāi)個(gè)玩笑,我希望大家寫(xiě)出的代碼都是很棒的,這樣咱們都可以節(jié)省出時(shí)間休息??

 

好了,回去睡覺(jué)了,明天還得接著給“孩子們”做別的工作;而且還有另一所學(xué)校另一個(gè)工作(同時(shí)被領(lǐng)導(dǎo)安排兩個(gè)工作并行有點(diǎn)難頂啊)。

 

責(zé)任編輯:武曉燕 來(lái)源: Piper蛋窩
相關(guān)推薦

2014-12-02 10:07:58

華為云VDC

2011-07-25 09:37:12

大型機(jī)管理CA自動(dòng)化管理

2018-09-19 13:51:21

遠(yuǎn)程醫(yī)療

2021-12-02 06:58:03

AIOps通信服務(wù)

2018-11-02 08:24:55

GitHub網(wǎng)絡(luò)鏈路

2019-05-09 14:42:41

安吉智能倉(cāng)庫(kù)

2013-05-27 10:21:39

游戲設(shè)計(jì)

2019-11-25 12:26:26

AI 數(shù)據(jù)人工智能

2016-01-18 10:06:05

編程

2014-04-22 09:42:12

Bash腳本教程

2017-06-28 11:12:49

戴爾超融合存儲(chǔ)

2015-12-03 09:02:22

掌握新事物100小時(shí)

2022-07-06 14:26:35

數(shù)據(jù)采集3D

2022-01-24 10:02:20

工具視頻搜索

2021-03-03 11:36:57

Java 8Java 15Java

2018-04-24 14:52:48

LinuxBash腳本

2025-06-13 02:25:00

2025-03-03 08:02:00

OpenAI模型端到端

2018-03-20 16:46:03

Windows 10Windows部署更新

2022-11-27 12:58:50

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)