Holden Karau是IBM首席软件工程师,负责改进Apache Spark并协助开发者向Spark贡献代码。Holden曾是Databricks的软件开发工程师,负责Spark和Databricks Cloud的后端开发。她曾在Google和亚马逊从事软件开发工做,分别负责Google+的后端开发和亚马逊的智能分类系统。她在大数据和搜索领域有着丰富的经验,精通Scala, Scheme, Java, Perl, C, C++, Ruby等语言。Holden著有《Spark快速数据处理》,与人合著有《Spark快速大数据分析》。git
问:你是《Spark快速数据处理》和《Spark快速大数据分析》的做者,这两本书有什么区别?你的写做过程是什么样的?程序员
《Spark快速数据处理》是第一本关于Apache Spark的书,因此这本书的重点是告诉人们如何开始。《Spark快速大数据分析》则是在一段时间以后写的,那时Spark SQL和其余重要组件已经加入了Spark,这本书更加专一于细节,可是仍然适合那些对Spark不甚了解的人。面试
在这两本书之间,个人写做实践发生了很大的变化,缘由有几个。《Spark快速大数据分析》是一本合做完成的书,从早期开始,在技术审校的帮助下咱们就提早发布了几个版本,因此咱们能够轻松地作出改动,而且咱们收到的反馈对于完成这本书来讲很是有效。在写做《Spark快速大数据分析》时,我还在Databricks工做,因此从程序委员会那里进行事实核查或得到反馈都是很是容易的,由于他们中的不少人就在个人办公室里。shell
问:你在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(旧金山本地的女性黑客空间)这样的团体真的颇有帮助,不管对于学习仍是创建网络来讲。
我认为在起步时参与开源软件开发是一种积累经验、增长资历的好方法,同时也能帮助你面试。话虽如此,可是对于某些开源项目来讲,社区里会有不少明争暗斗,因此我老是尽量地寻找友善的人,或者和个人朋友们一块儿工做。另外,我认为作分享是一种展现你的工做和结交领域内有趣的人的有效方法。