閱讀491 返回首頁    go 技術社區[雲棲]


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

  上一篇:go 跳躍表的分析與實現
  下一篇:go httpd: Could not reliably determine the server's fully qualified domain name