IBM美女工程師Holden Karau:尋找友善的人一起共事(圖靈訪談)

盼盼姐發表於2016-02-16

Holden Karau是IBM首席軟體工程師,負責改進Apache Spark並協助開發者向Spark貢獻程式碼。Holden曾是Databricks的軟體開發工程師,負責Spark和Databricks Cloud的後端開發。她曾在Google和亞馬遜從事軟體開發工作,分別負責Google+的後端開發和亞馬遜的智慧分類系統。她在大資料和搜尋領域有著豐富的經驗,精通Scala, Scheme, Java, Perl, C, C++, Ruby等語言。Holden著有《Spark快速資料處理》,與人合著有《Spark快速大資料分析》

IBM美女工程師Holden Karau:尋找友善的人一起共事(圖靈訪談)

問:你是《Spark快速資料處理》和《Spark快速大資料分析》的作者,這兩本書有什麼區別?你的寫作過程是什麼樣的?

《Spark快速資料處理》是第一本關於Apache Spark的書,所以這本書的重點是告訴人們如何開始。《Spark快速大資料分析》則是在一段時間之後寫的,那時Spark SQL和其他重要元件已經加入了Spark,這本書更加專注於細節,但是仍然適合那些對Spark不甚瞭解的人。

在這兩本書之間,我的寫作實踐發生了很大的變化,原因有幾個。《Spark快速大資料分析》是一本合作完成的書,從早期開始,在技術審校的幫助下我們就提前釋出了幾個版本,所以我們可以輕鬆地做出改動,並且我們收到的反饋對於完成這本書來說非常有效。在寫作《Spark快速大資料分析》時,我還在Databricks工作,所以從程式委員會那裡進行事實核查或獲得反饋都是非常容易的,因為他們中的很多人就在我的辦公室裡。

問:你在Databricks的工作和在IBM的工作之間最大的區別是什麼?你是否需要做出哪些工作上的調整?

對於日常工作來說,我在IBM的最大改變可能就是:我有更多時間專注地從事關於Spark的工作了。當我在Databricks時,我必須得花很多時間從事Databricks Cloud(商業產品)的相關工作。還有其他的一些變化,比如Databricks擁有Spark的大部分程式碼提交者,所以在那裡我的問題會更快得到回答,程式碼評審的速度也更快。當然,還會有小公司和大公司之間的差別,但是我們的小組做起事來卻出乎意料地靈活。

問:R語言是開源世界最流行的資料分析、統計計算及製圖語言,作為Spark的長期開發者之一,你認為Spark會提供R語言的介面嗎?

這件事已經發生了!SparkR專案現在正式成為Spark的一部分,同時Spark也開始提供R API。但是作為最新的元件,SparkR還有很長的路要走,要想和Scala做到功能對等還需要一段時間。

問:很多企業從關係型資料庫向大資料處理工具(如Spark)轉型的過程中都遇到了困難。對於這樣的公司你有哪些建議?

我認為從傳統關係型資料庫向分散式系統轉型的過程中會涉及到很多關於開發者的改變。Spark SQL可以彌補一些分析方面的差距——但是我認為很重要的一點在於:開發者必須增進對分散式系統在實踐中的工作方式的理解。與其上來就重寫現有的複雜系統,還不如在開始時重新搭建一個新專案(也許換一個新資料來源),這會幫助開發者們建立起具有指導性的知識系統。

問:很多人認為Spark會憑藉優秀的效能推翻Hadoop的統治,你同意嗎?大資料處理技術(如Hadoop, Pig, Tez, Hive,以及Spark)的生態系統在未來將會怎樣?

隨著時間推移,很難預測大資料系統在未來將會發生什麼,尤其在數量如此多的人都在參與開源社群的情況下。我相信久而久之,Spark會取代很多Map/Reduce系統和定製化系統,而其他系統則會把Spark作為執行引擎。但是仍然會有更適合定製化系統來完成的用例。

問:對於資料分析的不同環境來說,你如何在命令列和Spark之間做出選擇?

通常來說,我使用命令列會更加得心應手,但是對於除錯工作之外的探索性工作來說,使用notebooks這樣的工具確實很有幫助。當然,你也可以用Databricks Cloud,但是我使用Jupyter和Zeppelin的體驗也很不錯。然而對於生產環境下的工作來說,我認為notebooks很有侷限性,難以測試,所以在我渡過探索階段之後,我會使用更加傳統的jar包。

問:Hive On Spark和Spark SQL是什麼關係?你認為哪個專案在未來會更有潛力?

Spark SQL是Spark的一個重要元件——通過引入Datasets,Spark在已有的關係型API的基礎上把函數語言程式設計帶入到了Spark SQL中。我對Spark SQL的未來充滿期待。

問:對於已經熟練掌握Hadoop的人來說,學習Spark的路線是什麼樣的?你推薦閱讀原始碼這種學習方式嗎?

我的觀點可能有些不客觀,我認為《Spark快速大資料分析》會是一本進入這個領域的好書——但是在Spark shell裡做一些探索性的工作也是快速進入狀態的好辦法。對於Spark現在所處的時期來說,如果你想成為Spark開發者,閱讀原始碼是很有幫助的,但是對於終端使用者來說,閱讀原始碼通常是沒有必要的,除非你想要使用最新的特性。

問:如何高效地閱讀像Spark和Hadoop這樣大型開源專案的程式碼?有哪些工具可以幫得上忙?

我認為閱讀Spark原始碼對於想要向Spark貢獻程式碼的人來說是一項絕佳的活動。因為我是一位Emacs使用者,所以我喜歡用Magit,但是我也用過Ensime。很多其他開發者也覺得IntelliJ很好用。

問:中國的女性程式設計師比較少,特別是在“大資料”領域。對於那些想要成為開發者或軟體工程師的女性,你有哪些建議?

我希望我能給出更好的建議,但是顯然我的建議都從我的個人經歷出發,而每個人情況都是不同的。話雖如此,但是我發現加入Women Who Code和Double Union(舊金山本地的女性黑客空間)這樣的團體真的很有幫助,無論對於學習還是建立網路來說。

我認為在起步時參與開源軟體開發是一種積累經驗、增加資歷的好方法,同時也能幫助你面試。話雖如此,但是對於某些開源專案來說,社群裡會有很多明爭暗鬥,所以我總是儘可能地尋找友善的人,或者和我的朋友們一起工作。另外,我認為做分享是一種展示你的工作和結交領域內有趣的人的有效方法。


更多精彩,加入圖靈訪談微信!

相關文章