转载

IBM美女工程师Holden Karau:寻找友善的人一起共事

  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(旧金山本地的女性黑客空间)这样的团体真的很有帮助,无论对于学习还是建立网络来说。

  我认为在起步时参与开源软件开发是一种积累经验、增加资历的好方法,同时也能帮助你面试。话虽如此,但是对于某些开源项目来说,社区里会有很多明争暗斗,所以我总是尽可能地寻找友善的人,或者和我的朋友们一起工作。另外,我认为做分享是一种展示你的工作和结交领域内有趣的人的有效方法。

正文到此结束
Loading...