491
技術社區[雲棲]
Shell在大數據時代的魅力:從一道百度大數據麵試題想到的點滴
對於在Linux下開發的同學來說,Shell可以說是一種基本功。
對於運維的同學來說,Shell可以說是一種必備的技能,而且應該要非常熟練的書寫Shell。對於Release Team,軟件配置管理的同學來說,Shell也起到了非常重要的作用。尤其是分布式係統發展的如火如荼,很多開源項目都開展的如火如荼(好像不是分布式的係統都不好意思拿出來說事)。分布式係統的配置,管理,Shell也起到了非常重要的作用,雖然隻是簡單的文件拷貝,但是誰讓Shell天生是做這些的呢?
當然了,以上不是本文的主題。本文的主題是Shell在大數據分析領域的作用。
看一代經典的百度麵試題吧:
對於一個用戶日誌文件,每行記錄了一個用戶查詢串,長度為1-255字節,共幾千萬行,請排出查詢最多的前100條。 日誌可以自己構造。
對於使用C++, Java的同學來說,這個不是說幾分鍾就可以把可運行的代碼搞定的。這個怎麼樣也得幾十行代碼吧。當然了,這個也可以考察一個同學編程,設計的基本能力。
但是我相信,如果你能用Shell來完成,麵試官,或者至少是我,會很滿意,因為Shell天生就是做這個的:
一行代碼搞定:
awk '{print $1}' $file | sort | uniq -c | sort -k1nr | head -n$100
不用擔心內存的問題,因為這幾千萬條數據完全可以裝在內存中,而且,現在集群中的可用節點,沒有幾十G的內存都不好意思活著(當然了如果你們生產環境下的機器還是個位數的內存,那麼你們。。。)。
尤其是你上線了自己的某個Feature,可能想很快的看一下相關的數據,那麼把某個時間段的數據拿來分析一下,可以很好的去評估一下上線Feature的性能,等等。
最後更新:2017-04-03 05:39:19
上一篇:
跳躍表的分析與實現
下一篇:
httpd: Could not reliably determine the server's fully qualified domain name
C++編程規範之12:懂得何時和如何進行並發性編程
企業OA產品怎麼選 看完這篇橫評就懂了
c++學習筆記之類模板中的友元聲明
Linux中gcc g++常用編譯選項以及makefile的編寫
愛立信:42%智能手機3G用戶流量從未超限
MySQL · 引擎特性 · InnoDB Change Buffer介紹
android ListView中自定義SimpleAdapter動態添加ratingBar及圖片更新
C# WinForm多線程開發(一) Thread類庫
[WCF-Discovery]如何利用”發現代理”實現可用服務的實時維護?
linux shell 基礎 使用日誌與心得