隨著《關(guān)于促進大數(shù)據(jù)發(fā)展的行動綱要》(簡稱“《綱要》”)日前正式下發(fā),《綱要》提出,大數(shù)據(jù)成為推動經(jīng)濟轉(zhuǎn)型發(fā)展的新動力。大數(shù)據(jù)產(chǎn)業(yè)正在成為新的經(jīng)濟增長點,將對未來信息產(chǎn)業(yè)格局產(chǎn)生重要影響。伴著這股潮流,出現(xiàn)了N多新技術(shù)如Hadoop、Spark、Hive等等,與這些時髦的技術(shù)相比,命令行好像應(yīng)該被放進博物館被人參觀的古董。命令行的歷史可以追溯到幾十年前,而大數(shù)據(jù)的崛起才短短幾年,命令行技術(shù)在數(shù)據(jù)科學(xué)這樣新的應(yīng)用領(lǐng)域是否還發(fā)揮作用,彰顯其獨有的魅力呢?
前幾日,小編注意到ChinaUnix論壇中有一貼子《大數(shù)據(jù)崛起時代,命令行技術(shù)的價值在哪里?》網(wǎng)友們討論的很是熱鬧,網(wǎng)友fengzhanhai說道“命令行給系統(tǒng)管理員及開發(fā)人員帶來的靈活性和快感不是圖形界面所能夠替代的”。于是小編也投身參與,讓我們一起來討論。
命令行技術(shù)的優(yōu)缺點
使用命令行是很有趣的,記住各種命令,學(xué)會腳本的編寫,用命令行是非常高效的。即使是使用Windows Server,我們也可以使用PowerShell,繼續(xù)享受命令行的樂趣。對于初學(xué)者來說,命令行需要學(xué)習(xí)并記住很多命令及用法,顯得頗有難度。
網(wǎng)友seasea2517說“不用鼠標(biāo)操作減少鼠標(biāo)手煩惱,靈活、容易實現(xiàn)自動化批量化、系統(tǒng)要求低、不同平臺的同樣命令行工具下的操作相同。不足就是不夠直觀,上手比GUI慢一些。”
“從最初的dos命令行,truboC的命令行編譯及執(zhí)行,到unix和linux時代命令行的普遍應(yīng)用。他是一個系統(tǒng)工程師的普遍技能。但命令行是結(jié)構(gòu)化編程變成的產(chǎn)物,在面向?qū)ο缶幊痰慕裉?,追求對象的引用、類的實例化、RPC的時候,命令行就其不能應(yīng)對復(fù)雜的調(diào)用關(guān)系和形象的編程。尤其對于UE用戶體驗要求較高的場合,命令行基本用不上。”網(wǎng)友hiyachen說道。
網(wǎng)友yinyuemi非常喜歡命令行,他說“我的學(xué)習(xí)之路,有80%的代碼都是在命令行學(xué)習(xí)和運行的。很喜歡這種“溝通”方式,用awk/sed/grep等處理文本,命令行里操作無疑是高效的。經(jīng)常是一段代碼從頭寫到尾,不換行,一氣呵成,感覺只有這種方式不會把在腦子里形成的偽代碼思路隔斷。不足之處,我覺得是命令行畢竟是依賴于終端,history的記錄數(shù)有限,對于新手或不熟悉linux環(huán)境的童鞋們,一旦終端關(guān)閉,再想找回之前的代碼記錄并不是一件容易的事。當(dāng)然,高手們不會為此感到煩惱。”
那些你接觸過的命令行工具
相信每個Linux愛好者都能說出一大串命令行工具,并且能把它們運用的恰到好處!歡迎你們到論壇中(http://bbs.chinaunix.net/thread-4181945-1-1.html)來補充,這里說兩個印象比較深刻的~
網(wǎng)友xdsnet說道“用的比較多的是bash環(huán)境,以及其上的各類命令行工具,主要有直接bash內(nèi)置命令行結(jié)合系統(tǒng)命令進行系統(tǒng)管理。“
另一位網(wǎng)友jieforest談到“Linux Shell,Python的Shell、Ruby的Shell等。Linux Shell用于解決服務(wù)器維護、搭建生產(chǎn)環(huán)境、部署業(yè)務(wù)、測試等等。Python Shell、Ruby Shell通常用于開發(fā)及調(diào)試代碼。“
面對高大上的數(shù)據(jù)科學(xué),命令行過時了嗎?
打個做菜的比方,來描述數(shù)據(jù)科學(xué)5部分(數(shù)據(jù)獲取、數(shù)據(jù)清洗、數(shù)據(jù)探索、數(shù)據(jù)建模、數(shù)據(jù)解釋),要做一道菜的步驟——a先要有原材料,有菜;b 洗菜,過濾無用數(shù)據(jù);c 探索菜譜,能做啥菜;d 建模,實際做菜;e 解釋->吃菜,吸收營養(yǎng)。
網(wǎng)友seesea2517說:“和數(shù)據(jù)打交道多的就是 mysql 了,對于數(shù)據(jù)庫的數(shù)據(jù)來說可以用 mysql 或 mysqldump 獲取數(shù)據(jù),可以在 mysql 里做數(shù)據(jù)過濾,也可以用 awk sed grep 等過濾”命令行工具和技術(shù)永遠(yuǎn)在發(fā)揮著它的更接近于底層,一個個對資源(cpu、內(nèi)存、網(wǎng)絡(luò)、存儲)的有效利用。
也有網(wǎng)友說道:“一直用命令行處理文本問題,而對于數(shù)據(jù)科學(xué)在命令行的操作,命令行會不會略顯單薄。”
小編認(rèn)為:命令行靈活、可增強、可擴展、可擴充無所不在,能使你真正成為更加高效和多產(chǎn)的數(shù)據(jù)科學(xué)家。數(shù)據(jù)是數(shù)據(jù)科學(xué)工作的主要原料,因此很重要的一點是要能很容易地處理包含數(shù)據(jù)集的文件。命令行為此提供了許多方便的工具。命令行與其他技術(shù)能夠無縫集成。一方面,你可以經(jīng)常在自己的工作環(huán)境中采用命令行。例如,可以在Python 和R 中運行命令行工具并捕獲其結(jié)果。另一方面,也可以將自己的代碼(例如以前編寫的Python 或R 函數(shù))轉(zhuǎn)變?yōu)槊钚泄ぞ摺?/p>
【結(jié)語】
數(shù)據(jù)科學(xué)中,數(shù)據(jù)解釋最為關(guān)鍵,僅根據(jù)數(shù)據(jù)找出相關(guān)性,但缺乏相關(guān)領(lǐng)域的理解和解釋,是很危險的。就像一個嬰兒和一棵樹苗,在發(fā)育期的時間交集區(qū)間內(nèi)都會長高。看數(shù)據(jù),相關(guān)性非常好,但這兩組數(shù)據(jù)沒有任何關(guān)系。如果不能用合理的行業(yè)知識解釋數(shù)據(jù)的結(jié)果,就很容易犯這種錯誤。命令行在實施數(shù)據(jù)計算分析處理方面,是跨行業(yè)、跨學(xué)科的人進行有效協(xié)作,最簡單直接的方式。數(shù)據(jù)分析處理光靠學(xué)計算機的專業(yè)程序員是不夠的,更多的是依靠各個學(xué)科領(lǐng)域的專業(yè)人士編寫的程序包。把他們的成果匯集,還是一個個命令行程序。所以命令行不會過時,命令行工具和技術(shù)也發(fā)揮著作用,只是調(diào)用/處理流程上會發(fā)生變化,很多命令行命令(組/集)因為需要重復(fù)使用,而為了減低工作強度,會通過配置、預(yù)處理等等手段來減少正式命令行輸入,但本質(zhì)還是命令行工具。