那我们现在来开始我们今天的讲座。然后大家可以看到,嗯,屏幕上方有两个二维码。第一个二维码是我们 Big Tiger 的官方公众微呃微信公众号,大家如果没有关注的话,可以关注一下。然后嗯,也会推。嗯,也这里面也会实时的推送我们最新的活动以及各种干货内容的分享。然后第二个是我的二维码,我是讲座负责人。

如果还没有进入我们大数据讨论群的小伙伴,可以加我一下,我把大家拉入到我们的讨论群中。然后,嗯,本次讲座的视频以及PPT也都会在群里以及以邮件的方式share给大家。之后如嗯,之后的讲座内容或者是新的讲座通知也会在群里发送,请大家关注一下。

那下面来介绍一下我们贝塔格。贝塔格是来自硅谷的终身学习平台。然后我们成立于二零一五年九月,经过不断的发展成长,目前有北京和硅谷两个 office,总部是 base 在硅谷,全职团队已经达到将近四十人。

然后我们坚信学习是一种信仰,为了不断适应工业界的需求。嗯嗯,我们必须坚持终身学习。而贝泰格尔就是想要为大家提供一个更为优质的学习资源,用更少的时间来达到工业界的要求。Less time, better job。

所以我们提供了提供了一个端端到端的智能学习平台。我们目前有大数据、人工智能、产品经理、数据科学、商业分析、交互设计、全站开发、后端开发。嗯,这这八个方向的学习,大家如果对某个方向感兴趣,可以去我们的官网上进行详细的了解。

然后,同时我们也邀请到许多硅谷的华人领袖、科技界的大牛来给我们介嗯分享经验,以及参与到我们的课程讲解讲解当中,这是非常大的一个嗯资源库。比如说Elizabeth徐徐玲,她是硅谷最杰出的华人女性。然后他们这些大牛的分享视频也可以在我们官网中找到。

那我们现在 ByteDance 已经与国内国内外两百多家企业达成了合作,建立了 ByteDance 的专属人才推荐系统。然后,如果是你够强,我们就会把你推荐给我们的合作企业。不过比较遗憾的是,这个系统已经不再对外科开放了,仅对我们内部学员开放。欢迎大家持续的一个关注。

然后下面来介绍一下目前正在火热招生的CS五零二大数据直通车课程。这个课程会带领大家在三个月的时间内做三个工业级的大项目。第一个是 Big Data Infrastructure 的强化训练。然后,嗯,搭建一个实时的数据分析系统。

第二个月是在 Apache PMC Chair 的带领下做一个开源项目,成为我们 Apache 开源社区的 Contributor。在经历了两个月的高强度训练之后,第三个月是在老师的指导下做一个实战项目。这个是 personalized,可以根据我们学员不同不同的兴趣进行不同方向的选择。

那嗯,还没有进群的小伙伴可以再扫一下二维码,然后让我把大家拉入到我们的讲座群中。下面的时间我们就交给Kevin老师,让Kevin老师给我们大家嗯大家带来今天的讲座内容分享。

啊,稍等一下,我先切到 Presentation more. OK,呃,首先很荣幸受邀那个 Big Tiger 过来做一个大数据工程师日常工作和项目应用的一个分享。因为我跟这个 Big Tiger 的创始人庆元同学呃比较熟吧,所以当时就过来帮忙做一些演讲。

所以今天主题可能说关于,嗯,因为大数据工程师这个职位大家平时听的比较多,但是具体每天在干嘛?以及他们在大公司里面的项目大概长什么样子。呃,或者说成为一名大数据工程师,从一个学校里面出来到成为大数据工程师需要掌握哪些技能?

所以,大概今天的分享会是cover这些部分。呃,首先做一个自我介绍吧。呃,我现在其实公司已经改名字了,所以相信各位如果对IT业界的新闻比较了解的话,应该知道雅虎被Verizon收购了,对吧?今年四月份发生的事情。

所以我在雅虎大概待了有接近七年了吧。呃,当年是在北京,join北京雅虎,后来从呃拿到了一个总部relocation offer,所以在二零一二年来到美国这边,就加入这个总部这边。所以现在我是呃一个senior manager,然后大概带带了十几个人的呃工程团团队吧。

主要负责的项目是,呃,在历的整个雅虎下一代用户画像平台的设计和开发,然后我自己是做一个架构师。呃,参与了这个整个用户画像平台的设计和下呃第一代和下一代的设计。

呃,然后我个人的背景是我零七年从中科院软件所毕业,然后零七年的时候,当时参呃加入加入了一家创业公司,叫做爱帮。啊,然后我们的CEO是呃刘建国先生,是百度的第一任CTO,所以当时零七年到一零年在创业公司干了三年吧。

然后九九六对吧?也就当当年零七年就是九九六文化,呃,后来这家公司没有很很遗憾没有做做成功,没有做上市,所以后来就从创业公司quit了。然后join加入那个雅虎,当时在北京新成立的全球研发中心,在那边大概干了两年左右吧。

所以后来又relocate到 Sunnyvale这边来了,所以这大概是我的一个职业背景吧。

所以,呃,专长领域基本上可以认为是分几大块儿吧。一个就是说,我是做Big呃纯做Big Data的,偏向于做Data Warehousing叫数据仓库吧。然后Domain或者Industry大概是在定向广告以及那个个性化平台这方面。

所以我比较熟悉的系统就是说 Hadoop 相关的生态系统,包括最近比较流行的 Spark,包括 Flink。然后再加流式处理的框架像 Storm,还有 Kafka,以及一些 NoSQL 数据库,比如说 HBase、Cassandra、Redis 之类的。

所以到时候我可以跟大家 share 一下,就是说一个大数据工程师他的常用的呃技术栈有哪些。这大概是我的一个个人背景吧。

呃,今天的一个 agenda 大概是这样的,首先可能会大概给各位描述一下,比如说我的 team 其实就是一群大数据工程师。所以他们这些人每天都在干啥,对吧?以及说其他的公司大数据工程师每天在干啥。

还有一个就是说讲讲大数据项目在一个比较大的呃主流互联网公司它的应用是大概长什么样。比如说Facebook、Google他们大数据项目大概怎么落地的?

呃,第三个我们可以谈一下,就是说想成为一名大数据工程师。呃,从我不知道大各位的背景是CS的还是Double E还是说其他专业。所以各位能不能再帮我一个忙?去,如果是CS毕业的,请打一;如果是WE毕业的,请打二;其他请打三。

我看一下大家是怎么一个背景吧。OK, one two two two OK,有不少Double E的。OK,有没有非CS和Double E的?麻烦给我打一个三啊。Information System也算是相关领域吧?我不觉得这个这个方向隔太远。

李彦宏也就是这个专业毕业的,对吧?北大信息信息专业毕业,ME,OK,力学工程吗?ME是。OK,OK,Anyway,但但听起来应该大部分同学是呃CS或者Double E毕业的,对吧?

OK,那好,啊,多谢力学,OK。那我回到那个 presentation mode,所以我我想大概知道一下背景,所以这样我有些 terminology 我不知道需不需要解释一下啊。

这样挺好,大家的背景都比较相关,所以呃我会大概讲到一些,比如说一些常用的编程语言呢,对大数据工程师和普通软件工程师有什么区别。然后当然技术栈肯定是差很多,对吧?你像一般的软件工程师可能不会去学 Hadoop 啊 Spark 这些东西。

但大数据工程师你是必须学的。项目经验我会大概touch一点吧,啊,倒数第二个topic其实一直是我自己个人比较感兴趣的,也是喜欢跟人去argue的一个一个一个领域吧。就是说这几个title之间到底区别在哪个地方?

那今天大家都在都在讲 data scientist,对吧?数据科学家。然后 n 多年前没有大数据这个这个这个 term 之前,大家都是软件工程师,都是码农,对吧?都是码农。大数据工程师的码农和软件工程师码农到底有什么区别呢?

对吧?所以我可以大概跟大家分享一下。最后一个是一个比较大的 topic 吧,我只能说跟大家 share 一下我的个人的 opinion,所以大家可以讨论吧。

就是现在 N 多年前,大家各个公司都在谈 mobile first,对吧?互联呃移动互联网优先。到现在大家感觉不谈 AI 就觉得呃有点有点 low 了,对吧?有点落伍了。所以在大家都在谈AI first的今天,大数据工程师或者说做一个普通软件工程师,这个对职业发展有什么样的一些影响和启示吧?

所以这大概是今天的 agenda。呃,先看一下,就说一个大数据工程师的日常什么样子。首先第一个问题就是说,不是所有的 IT 公司或者 IT 的公司的各个团队都是都需要大数据呃工程师这个角色。所以首先要回答问题就是什么样的公司需要大数据工程师。

虽然很多很多公司都在谈我我们在做 big data,我们在做云计算,我们在做 AI。但是其实你如果仔细去分析这个公司的业务以及它的这个呃 data 的体量以及它的这个 data 的呃 variety 或 velocity,对吧?你可以其实可以大概能判断出来这个公司是不是真的需要真的在做大数据。

你第一个就是说,从大数据来讲的话,呃,traditional的一些概念,以前就是说你有三个V,对吧?这是最经典的一个定义。就是你的数据量、你的数据呃大数据产生的速度以及你的那个不同的种类,对吧?所以你你得满足三个V,你才才能认为你在做大数据。

所以第一个V就是说你的体量不能太小。如果你体量小到比如说只有一个 million 一百万行数据或者 ten million 一千万行数据,其实你不能叫你呃不能说你在做大数据。你其实拿一个 MySQL 就能把几十个 million 的数据轻松存下来,对吧?

你可以。然后你 SQL language 可以做各种各样的分析,对吧?你可以写 SQL query 去分析你的各种数据。其实你是用不到 Hadoop 或者 Spark 去做这个大规模数据处理,所以这是第一个前提,你的数据得足够大。

大到一台 server 或者一个普通的单机数据库扛不住,所以你才需要出现一个大数据的一个 big data 的 problem。对吧?所以你才需要大数据工程师,否则的话,可能你随便 hire 一个 Java 程序员,懂点 database,能写能 coding,可能就搞定了。

这是第一个。第二个就是说,你仅仅有大规模的数据也也不够。就是你如果有足够多的数据,但是你不知道怎么从这个数据里面去 mining 一些价值出来,去挖掘一些价值出来,辅助你做决策。其实也不能认不能认为你这个公司或者这个 team 在做大数据相关的项目。

所以因为你大数据最终 eventually 你要解决的问题是什么呢?就是说你要解决 data driven 的 decision making。你可以想就是说现在你不管是 Google 做搜索引擎,Facebook 做 social network。或者像传统像雅虎当年做一点零、二点零的那个门户网站,其实门户网站它需要解决问题是做 personalization。

对吧?就你不同的 u user 过来看到的界面或者看到的 content 都应该不一样。Google就是说,你不同的人search,你其实也可以做一些personalization,对吧?甚至你的ranking算法都是需要通过大量的海量的query log。呃,去做mining,然后辅助做决策和优化。

所以说,你必须有一些 mining 的需求才有才能叫做在做做big data,否则简单的数据收集扔扔在那不用,其实没有什么意义。这是一个前提吧。

第二个就是说,我们从呃一个大数据工程师每天干的工作其实会touch到哪些领域来讲,其实包括这么几方面吧。第一个就是大数据工程师你肯定是一个系统工程师,对吧?所以大数据工程师必须首先是个软件工程师。

但是仅仅是一个软件工程师不够,你还得有一些非常 specific 的一些呃技能吧。就是说你得知道怎么去 handle 这些 large scale 的 data processing,对吧?大规模数据处理。就当你的数据有 PB 量级甚至到GB量级的时候,你怎么能够 leverage 你的呃你的云平台。

对吧?你的你的 grid 你的 cluster,通过几千台机器并行处理,能够解决这个大规模数据处理的问题。这是需要 unique 的 scale 的。

第三个方向就是说,这个这个可能是跟 data scientist 的一个 overlap。你不管是大数据工程师还是 data scientist,你都必须有很强的数据分析的能力。就比如说,我不知道有多少同学熟悉那个 MATLAB 以及那个 R 这个 language,对吧?

所以很多数据科学家他都会在实验室的时候都会学这种 MATLAB 或者 R。当然,现在可能大家越来越愿意学 Python,对吧?用scikit learn去用一些呃library去做一些数据分析。

然后往再往上走,就说你简简做简单的数据分析可能也不够,你可能得去做一些机器学习的模型。一些model,对吧?不管是你线性回归的也好,还是你K-means的也好,还是Random Forest也好。你可能会慢慢touch到机器学习,甚至深度学习Deep Learning这个领域,对吧?

Eventually,你希望做到的是商业智能,你做的是BI。对吧?Business Intelligence。所以说,你你所有东西最后要 surf,就是说帮助我这个公司能够提供更好的用户体验,然后能够赚更多的钱。

就比如说,大部分公司互联网公司靠广告赚钱嘛。你怎么样能够 make a right decision?当一个 user 在你的 website 呃出现的时候,你秀一个非常 relevant 的一个广告给他。most likely 他会去点,这样你才能才才能 make money,对吧?

如果你给一个男生秀一个化妆品广告,很多时候他可能不会去点,对吧?除非说是情人节或什么。所以这个时候你得去 make 一些 smart decision。这个都是需要通过大数据分析,通过机器学习建模型,然后最后能够帮助做一个正确的决策。

呃,第三个地方就是说,其实我大概也谈到了这一点,就是说你工作成果是什么样。你最终需要做到的是 data driven decision making。所以这个 data data data driven decision making 在很多的领域都有很好的,就是很成功的商业实现。

我可以举两个例子吧,一个是在线广告。雅虎、Facebook、Google,其实百分之八十以上的 revenue 都是来自于广告,对吧?因为你你用 Facebook、用 Google、用雅虎都不会给你都不会找你 charge 钱。

对吧?邮箱搜索,你去 create 账号,其实都是免费。真正它赚钱的来源都是通过 charge 那些广告主。比如说 Facebook 它有它的 streaming ads,对吧?当你不断去刷那个你的 Facebook 的那个呃 content 的时候。

就是你你的那些内容的时候,它会在中间会插一些跟 content 几乎无法区分开来的一些广告。我们我们把那些广告叫原生广告,叫 native ad。或者叫 ad,呃,是 content。就是广告跟内容,就是基本上你可以认为就是有点有点 cheating 吧。

就是很多时候有人会点错,以为那是一篇文章或者是一篇新闻。其实那你点进去才发现,哦,这原来是一个广告。那就证明这个这这个广告系统把呃 user experience 做得非常好,并且你这个广告还是非常 relevant。跟你的上下文是相关的。

这是呃那个Facebook那边的广告。Google那边广告就大家应该比较熟悉了,对吧?Sponsored Search就是说你通过搜索的关键词。他会给你在右边或者搜索结果的上面、下面会给你一些呃一些相关的广告吧。

所以这是Google的主要数据呃Revenue来源。像雅虎或者其他的一些传统的网站,基本上都是靠那个Display Ad,就是在线的显示广告。比如说,你去雅虎的首页,你会发现看到很多那种 banner 那种长条的 display ad。

当然,也也会越来越多的有些 video 广告。就比如像 YouTube,你看视频的时候,对吧?它会有倒计时,你过多少秒可以 skip 这个广告。

但是呢,它会再在你的视频中间会插入一些广告。但是现在我据我所知,YouTube的广告其实没有太参考这个上下文。就是你跟你看的视频是不是相关,其实不是它最重要的考量的东西。

它其实更多的是leverage你在YouTube上面的一些query,去去去去那个optimize这个相关性。所以说,从嗯工作成果来讲,就是你 big data 的 engineer,你要帮助这个公司能赚更多的钱。所以怎么赚更多钱呢?就是你提供一是是提供更 relevant 的

内容,就是个性化,或者提供更相关的广告,就是说你去做变现,对吧?所以这都是商业价值。如果说你反之,如果你不能从大数据里面挖出一些有价值的数据出来,或者洞察出来,帮助公司能够提升这个用户的体验或者变现,其实大数据其实一个很大的头疼事,是很很头痛的一个事情。因为你有大量的数据,你又不能从中间挖出价值、挖出一些矿出来,但是你又得存储这些数据,对吧?你你要存的话,你最简单的就是你得有硬盘,对吧?你得有存储去存这个,这是肯定是在得有成本。

第二个就是说你会有责任风险。对吧?比如举个例子,欧洲那边,欧盟那边,一六年出台了一个关于用户隐私的一个政策,叫GDPR,应该叫General Data Privacy Regulation吧,大概是这么一个缩写。也就是说,你存了一堆数据,用用户数据不用,你不光没有办法从中间挖出价值来,你还得去跟欧盟这些政府打交道,否则的话,你不能在欧洲国家去做你的业务,对吧?所以你有很多责任风险的成本在哪?所以其实很多时候是一个很大的头疼事。如果你不会用的话,OK。

所以接着我们可以讲讲大概一个大数据项目在公司,像一些主流的互联网公司,它到底是怎么在落地、怎么在用。所以一般基于我过去几年的经验吧,首先你得知道你自己有什么样的数据。比如说,我举个例子,你像Google Maps,对吧?我不知道现在Google Maps和那个Apple的Maps大概这个市场份额各占多少,但是我知道,我了解身边的朋友基本上哪怕你那个iPhone上内置有一个Apple Maps,它一般是不去复制粘贴把那个地址抄下来,然后把Google Maps打开又贴上去,它宁可这么繁琐,它也用Google Maps。

所以我的感觉的话,就说Google Maps的这个市场份额应该远远超过Apple Maps,对吧?然后其他的一些地图的提供商,他们的市场份额就更小。所以说当这个Maps Data被这两家公司给主导之后,你其实如果想去做一些跟location相关,以及跟这个用户实时的地理位置相关的一些大数据应用,其实就很难,对吧?除非你跟别人别的公司合作,或者说你去买第三方数据。所以这是一个东西,你首先得了解你自己有什么样的数据,然后什么样的数据是独特的、排他性的,别人没有,你有,所以你可以去构建一些相关的大数据应用。

你比如说再举个例子,像Google,它有很好的搜索数据,对吧?所以你看它的广告其实基本上都是围绕它的搜索去做,它不会去像Yahoo做那个展示广告,也不会像Facebook去做那种流式广告、内容原生广告,因为它压根就不是一个发布者,不是一个门户或者是一个发布者的平台。它是一个更有点像那些工具性、工具性质的平台。所以说,你得理解自己的数据长什么样。

第二个就是说,你知道自己的Data长什么样之后,你第二个问题就问自己:说我要做什么样的决策?你是想去优化你的用户体验?比如说,我不知道多少人知道国内的那些阅读应用,比如说像那个今日头条,还有那个一点资讯对吧?当然还有一些其他那些网页、一些新闻应用。就说他们其实更多的用数据、用大数据去解决的问题是个性化,是做Personalization。

虽然我对Personalization这个东西其实有很多不同的看法,也就是说你个性化做到极致,最后得到的效果就是说每个人最后看到的东西是永远就是那些东西。你不断给你的这个系统一些正向反馈,说我就喜欢看美女,每次就点点美女图片、看美女新闻、美女相关的新闻。最后这个系统给你的反馈就是不断给你相关的内容,你就是看到越来越多的你感兴趣的东西。其实这样从某种程度上不是特别好,因为你会让一个人有点一叶障目的感觉。

就是你这个人会变得越来越狭隘,永远只会对这几个领域感兴趣,对吧?这当然是我自己的一个偏见了。所以我是有点反Personalization这个东西的。所以我希望看到的就是说,你有一些个性化,但是你也得给我一些至少让我知道有些时事的东西。你不要因为我不去关注你就不投递这些内容给我,对吧?至少有些比较Hot Topic你还是得告诉我。所以这是有点偏题了哈。

就是说,对于这些应用,他们要解决的问题是做Personalization、做个性化优化用户体验。然后对于像Google、Facebook、雅虎或者其他的一些互联网公司,可能这些公司要解决的问题说怎么去变现这些不管是搜索还是社交的网络,或者是你的内容去打相关的广告能够让这个公司赚更多的钱。所以说它解决的问题更多是说怎么样去投放一个非常相关的广告,然后你这个转换率和点击率会非常高。

所以你可以看那个KDD或者ACM一些会议里面有,过去几年有大量的做CTR预测、AR预测的一些论文。对吧?有各种各样的一些奇淫巧技去骗人家去点广告,当然骗要打个引号哈。就是说去诱导人家去点广告。所以具体来讲就怎么样去做一个大数据系统能够做个性化、能够做这个精准广告投放呢?基于我的经验来讲的话大概会分这么几步吧。

所以第一步你首先得把数据能收集下来,对吧?这是一个原有一个前提。你如果数据量没有办法收集下来你是没有米下锅的,对吧?所以Data Logging就是有Logging System。然后第二步就是说你数据Log下来之后你得把这个数据发到某一个类似于Messaging Queues之类的系统能够跟其他系统能够对接,对吧?

所以如果大家比较熟悉一些开源的项目的话LinkedIn在几年前开源了一个项目叫Kafka。对吧?我不知道多少人听过这个就是说Kafka它是有有点类似于像Data Highway,它是一个Messaging的一个Queue分布式的消息队列系统。所以你不同的Server比如说你的搜索引擎的Search Engine或者说你的Apache Server里的那个Page View Content还有你的广告Ad Server其实都可以Talk to这个Kafka Data Highway System去把这个数据Log下来。

OK一旦Lock下来之后你接下来的任务就是我怎么样去做一个Build一个Data Processing System不管是Batch Processing还是说Streaming Processing你都得有一个东西去Process这些Data。这是第三步所以Data Processing这块就有很多很多的这个开源的一些Framework比如说Hadoop的MapReduce对吧?比如说Spark,比如说Storm。

就说它们有不同的领域像Storm是做Streaming Processing的,Spark是做Batch然后MapReduce做Batch。当然Spark也有Streaming对吧?做那个流式的数据处理。呃一旦你数据处理完之后你得把这个数据得落地,对吧?得存储下来、得去有一个持久化存储能够去Store这些Data。所以Data Storage这块又有又是另外一个百花齐放的领域,对吧?

你像比如说当年Google Open Publish一篇Paper叫GFS。啊就是我顺便提一下哈说Google For Sure是一家非常非常伟大的公司。当年Google的三驾马车对吧?大家可能也有所耳闻,就是说它的MapReduce、GFS和Big Table。对吧?这是它的三驾马车这大概在2010年前后这个Google就是靠这三驾马车发家的,对吧?所以他们也是非常慷慨的去写了相关的论文。

比如说那个哥们叫什么来着Jeff Dean对吧?这是Google现在Machine Learning的一个大老板,所以他写了一篇论文就是关于这个发布讲这个MapReduce怎么Work以及GFS怎么Work。所以开源社区也就是Hadoop当时对Big Data对于Google这三篇论文的一个反应就造成了今天的这个Hadoop的开源社区MapReduce。这不用说这是Google读了那边Google那篇论文写出了一个框架。

然后HDFS实际上就是Google的GFS即Google File System的开源实现,对吧?然后HBase其实就是BigTable的开源实现。所以你可以看到今天MapReduce加HDFS加HBase在整个Big Data Open Source Community有多重要,对吧?像今天不管是Spark也好、Storm也好、Flink也好都是站在这三个巨人的肩膀上慢慢发展起来的。所以这是题外话。

所以数据存储大概我当时也提到了几个比如说HDFS这是一个一次写多次读的一个Sequential的分布式文件系统。像HBase它是一个Random Access的Key Value Pair的Column Based System。当然还有其他的一些Equivalent的Key Value Pair系统像Cassandra、像MongoDB对吧?包括还有像那个In Memory Database像Redis这些,当然还有Memory Cache D这是更老的一些东西。

所以数据存储是个百花齐放,数据处理也是一个百花齐放的两个领域我待会儿会可以展开讲讲有哪些主流的一些框架。呃一旦你的这些数据存储下来之后你可能就会说OK我要开始做一些Mining对吧?你要做一些Machine Learning的一些Model甚至Deep Learning一些Model去On Top of这些Big Data。然后去卖一些Insight出来就比如说我的Team做的一些事情叫User Profiling国内翻译叫用户画像。

呃用户画像大概是什么意思呢?就是说你一个人一个用户你可能每天在互联网上有很多很多的Behavior你可能会去用你的不管是Laptop还是用你的iPhone你跟整个互联网有很多交互这些交互出来的一些数据就变成你在互联网上的一些行为数一些Behavior对吧?比如说你看过什么页面、搜索过什么关键词啊Search过什么关键词然后点过什么链接呃点过什么关键。

然后在亚马逊把什么东西放到过购物车,有些你下单买了Place Order对吧?有些你是放在购物车没有买什么什么的。整个不同的公司其实都可以Track你这些Behavior所以这听起来是很吓人的对吧?就说这个Big Data其实很多时候如果你利用得好它其实是比用户自己都更了解这个用户,因为你自己Memory有限对吧?你不可能记住你自己干过的那么多事儿。

但是这个System它是机器它可以记住你过去一年甚至过去十年你干过什么事都能记住,但是这些都是一些比较Raw Data对吧?Raw User Behavior。但是我怎么去给你这个用户做一个画像?画像的意思就是说当我没有Collect enough Data的时候,我对你这个人来说你可以想象我在给一个犯罪分子画像对吧?也就是说你警察去给一些目击证人录口供的时候他是不断的通过问答的方式慢慢在脑袋中形成一个越来越鲜明的一个犯罪分子的一个Profile、一个一个画像。

其实,在Big Data很多System里面有点类似,其实也有点像是在给犯罪分子画像。就比如你今天Search过iPad或者什么东西对吧?然后我至少可以在你画像里面打一个Tag说OK这个人可能是一个苹果的水果粉,对吧?这是一个Tag。然后过一段时间你好像你又经常去看一些跟游戏相关的呀、一些广告也好,或者去看一些游戏直播的一些平台的一些Video。

后来慢慢我就可以猜测哎这哥们儿多半可能是个男的,对吧?所以我就会猜测Most Likely百分之六十的Confidence Level这个人是个男的。然后我又基于你的很多很多的这个Internet Behavior能推到你年龄段可能在十八到二十五岁,或者说比如有些四五岁、四十五岁以上的人天天看一些什么呃401K呀讲一些什么提早退休这些东西那多半这可能是个老家伙对吧?嗯四十五岁开外然后这哥们儿从来不去玩游戏、从来不看一些比较有意思的娱乐视频所以多半推测这人可能是四十五岁开外的一个Age Bucket。

所以我不断看你的User Behavior的时候我会对你这个画像越来越清晰,最后都能推测出来这哥们儿到底戴不戴眼镜对吧?是长发还是短发然后身高是多少。所以如果你对一个优秀的Profile能做到这么精准的话你可以想象我在投放广告或者说在给你去秀相关的Content的时候我可以做到非常精准,对吧?就是说大概是一个定向广告或者一个Presentation系统。

然后另外两块部分更多的是你可以认为是Visualization吧。就是说我会基于你存储的这些用户画像或者一些User Data你想去看一些Insight。比如说吧就比如说一个广告主他想去Target一些用户人群,但是他其实不知道Potentially他可以Reach多少人。所以他会不断去更改他的那个选择条件比如说我在Sunnyvale或者Cupertino我有一家理发店。

我现在刚开张我想去打一些广告,但是我想我自己知道我只想把我的广告秀给一些Local的People对吧?我不想把这个我是一个Cupertino的Barber Shop,我不想Show Ad到德克萨斯的用户。所以我先首先选个Location Zip Code九四零八九或者九五零三幺或者什么什么的。

Zip Code之后,发现OK,系统会告诉他你可以reach大概呃五个million的用户吧。然后他说哦,这too too many,我不需要reach这么多人。然后他又开始讲,OK,我可能呃要reach一些年龄段在二十五到三十五岁之间就是我的我的理发的人群可能就是定向啊定就就这群人吧,年轻到中年人这群人。所以说他会又会加一个条件。所以这个时候一看哦整个这个audience size有五个million可能降到一个million他觉得还是太多了他说OK那我继续加。所以这就是data visualization和那个data query你这个data query必须实时的你不可能说人家选了个条件就让他等一个小时或者五分钟。

一般我们的经验就是说,你超过十五秒可能这个user就觉得你这个系统是呃不能用的不可用的啊useful对吧?所以你你会有些system的一些挑战怎么样去保证这个数据的query在海量的数据上能够达到准实时的一个latency?OK这块花了很多时间了所以我们大概讲呃再接着到另外一个topic这个我们可以稍微走快一点吧我想给更多的时间大家做Q&A。

呃关于一个大数据工程师比如说你是一个NCG,你是一个New College Graduate对吧?一个刚出门刚刚从学校毕业的人,在面试官的眼中就是对你们的期望会是什么样子?因为我本身我也是个Hiring Manager所以一般我们会看至少编程语言方面,至少会看两个东西吧。一个就是一个通用编程语言你一般会期望你会Java吧?

如果你会C C plus plus也可以也没问题。但就是说你可能进来之后可能又得熟悉下Java因为很多时候我们的编程语言的选择是根据我们的那个framework相关的比如说你像Hadoop Hadoop它是用Java编写的对吧?所以天然自然来说它对Java的support会更好是一等公民。你如果用C C I加去写那个Hadoop的一些application的话会有点不是那么好对吧?

不是那么自然因为很有很多很很有可能一些new feature它是先让Java的API available然后再去考虑加到那个C和C plus plus上面。所以就是为什么选Java?当然像Spark它既有Java也有那个Scala但是很多时候我们不是特别喜欢用Scala因为这个东西毕竟不是那么mature的一个语言。

然后市面上招Scala的工程师也不是那么容易所以还是觉得用Java比较好一点。然后另外一个方面的话就是我们希望大家能够会一门至少一门脚本语言吧就是你不需要编译你拿来就可以run那种。所以现在主流的一般就是Python和那个Go Google的那个Go语言对吧?

你如果会什么R啊或者MATLAB这个我们不认为是一门呃叫什么呃decent的一个脚本语言吧因为你在production environment底下run的时候我们不会用R去用不不会用R写的语言去跑你的job肯定会用Python对吧?或者像Go。除了语言之外其实更看重的是一个比较基本的一个solid的一个程序编程呃程序设计的一个素养。

这里这里的程序设计素养不是指那个刷题哈所以因为我知道很多人都会去面试前都会刷题当然有的公司是比较就面试里面会你可能遇到四轮面试里面可能三轮面试都是need code的题对吧?但是不是所有公司都这样至少我的team面试我不会让四轮面试都是面刷题的一些东西对吧?

至少有两轮不会是刷题的东西。我们更多的是希望从我们平时工作项目里面提炼出一些问题出来去问candidate然后看他能不能找到一些比较acceptable的一些solution。所以如果你的程序设计素养足够好你的CS功力足够好其实学一门新语言也就是一两周的事儿。

啊当然不是说你一两周能够像一个五年五六年工作经验的工程师写的非常精炼、非常准确的code但是一两周你至少能够看懂比如说Java language的一些写的程序对吧?你可以去做一些局部的改动这个应该是问题不大。

呃关于数据技术栈来讲的话这个地方首先我要提一点的就是说对于NCG来说的话大部分的hiring manager可能不会去看中你这些所谓的数据栈因为我的经验就是说你可能会通过HR的那个简历筛选因为你里面有很多那些比较fancy的一些word就是我这个地方列出了这里面这一堆然后HR可能不懂他一看你简历发现啊这哥们儿搞过Hadoop搞过Spark又搞过Flink然后HDFS也懂什么都懂对吧?觉得OK让他过来参加面试了。

但其实十个candidate里有八个candidate过来在我们这边基本上经不住问就是你一般问一个问题可能能够overview或者high level能够跟你去回答一下但是你一旦follow up去问一下你就发现这个candidate其实没有一个比较hands on的experience在这些工具技术栈上的所以其实没有太大用吧?

且不是说没有太大用吧除非说你有那个比较大的互联网公司的相关的实习经验有可能你对这个工具确确实实有一个比较好的了解但如果你只是在学校啊或者一些课程设计里面用到一些这个东西可能用处不大。一个主要原因是什么呢?就说你拿Spark也好拿那个Cassandra去存数据也好你的数据规模不够大所以你遇不到我们平时遇到的一些挑战对吧?

你比如你用Hadoop我们就问了一些candidate就比如说那个关于Data Skew那个问题数据偏斜的问题你们怎么解决?其实你数据足够小的时候压根你不会你的code根本就不会遇到这个问题对吧?你数据太小data skew只有说是你数据大到一定程度的时候才会遇到对吧?

当然像HBase一样如果你数据不够大的话你根本就不会touch到所谓的major compaction对吧?你的region server会热到快down掉的情况对吧?你问这种问题这个candidate根本就答不上来他没有遇到过这个。所以说对一个NCG来讲我们可能主要看两点吧第一个就是说是不是足够smart对吧?

Smart的意思就是说你是不是一个quick learner就是你可以学不懂的东西能够足够快的能学会这是一个第二个就是说你能不能有一些basic的一些coding或者engineering的一些skill对吧?因为公司不是一个培训机构我们不可能花一两个月去培训你手把手教你怎么编程怎么去design pattern设计模式。

怎么选到底选哪个设计模式你是选singleton还是选那个publisher subscriber还是选那个abstract factory?我们不想去花时间educate candidate关于这些方面所以我们会expect一些基本的design pattern基本的一些aggregation、basic的一些coding的素养都已经有了。

所以这是对NCG对于有工作经验的工程师当然我们会比较看重你的这些技术背景呢你的相关领域的一些经验。因为对有工程有经验的工程师我们可能会期望你过来就能干活甚至会期望你能带一个团队去deliver一些东西。所以说这是要求是不一样的OK呃还有其他的一些呃对这个我大概有些cover了一些部分吧。

所以我觉得项目经验你的internship是非常重要因为你coding面试如果过了之后剩下的就是能够differentiate不同的candidate的就是你的实习经验对吧?你当两个人coding都能够打三点五分满分四分的情况下都能打三点分这个时候就会看你的实习经验。

假如说就说有一个岗位三个candidate coding的面试都过了那最后只能选一个怎么选呢?当然就是看你的项目经验。所以其实公司选人其实是很简单的其实就是ROI对吧?我们招了一个candidate希望能够用最少的training时间能够拿到得到最大的回报说说白了就是这个意思对吧?

然后软技能方面主要就是沟通吧。其实沟通能力很多时候很难去描述但是在面试的过程中其实有时候会感觉得出来当面试官跟你聊的比较happy的时候就不像一个面试更像是在交流一个问题那基本上就是说也会认为你的沟通技能很好认为你的软技能很好。

所以这是一个相辅相成的过程吧因为你可能有一些相关的实习经验你会跟面试官沟通会更顺畅一点你们会有一些common language对吧?甚至有些terminology你都可以去跟面试官去聊因为你比较了解这个领域对吧?所以实习很重要。

呃OK所以花了四十二分钟了OK所以我大概分享一下我对这三个role的一些理解吧什么叫大数据工程师、普通软件工程师和数据科学家?他们在这个skill set上面有什么样的共同点?

所以我不是特同意他这个图里面用的一些技术因为特别是像Microsoft的SQL Server这玩意儿。因为我是从来没有在微软的任何系统底下写过任何一行代码所以我是我肯定如果我要画这个图的话我肯定会把那个MySQL SQL呃MySQL Server换成那个不对把Microsoft SQL Server换成MySQL或者Berkeley DB对吧?

因为这种是更industry更接受的两个东西对吧?嗯我很少听到有人用SQL Server去做关系数据库的存储。然后C和C++我更想把它换成Java或者像Go之类对吧?因为很多公司现在用C++和C写系统越来越少。那当然我知道Facebook有一些team在用C++去重写一些系统以前是Java写的后来觉得不够efficient吧然后用C++去rewrite。

但是很多大部分公司都是用Java所以你看到面试的时候可能大家觉得还是倾向于期望你用Java去做那个coding的一些面试。所以这是一个我想说明的第二个就是说呃大家可以留意一下这个我们先看那个普通软件工程师和data engineer之间的那个overlap和它的那个difference。

你可以看到overlap就是说你的operating system again Linux或者Unix no Microsoft对吧?no Windows for sure Java所以这是一个common的一个领域对吧?然后有些东西是data engineer要掌握但是software engineer不用掌握的就是一些big data的一些技术吧比如Hadoop、data warehousing、hive还有一些database。

主要是一些NoSQL database这个是很多普通软件工程师他可能不需要去搞得很深的但是普通软件工程师可能要掌握一些像PHP啊像一些前端的一些技术jQuery、JavaScript对吧?然后甚至web service比如说像那个RESTful API的design对吧?

就是你用那些native的那个叫什么get post put delete用这些东西去实现一个API而不要用一些traditional的一些get啊就是你这个semantic不是特别clean所以这是一些前端或者API工程师他需要掌握的但是data engineer不需要掌握。

然后我们再去看一下这个大数据工程师和数据科学家他们两个role之间的一些区别所以你可以看到common的地方我刚才提到了data analysis数据分析是他们的一个common area对吧?所以你不管是数据工程师还是数据科学家你都得有比较强的数据分析能力。

然后你都得会做一些呃快速的原型开发比如说用Python用那个Scikit-Learn对吧去做一些简单的模型开发然后能够quickly去try一下idea。然后像Hadoop MapReduce Hive这些东西应该也是Data Scientist应该掌握的一些东西虽然不需要像data engineer掌握那么深但是你得做一些呃快速的原型开发。

然后有一些东西就比如说一些machine learning一些model比如一些算法很多data scientist都是一些统计学然后PhD毕业对吧?所以他们会有很强的统计学的功底然后会知道怎么去train一些数据然后怎么去做A/B test。

然后怎么去有training dataset然后有ground truth对吧?怎么去evaluate一个model的effect呃efficiency对吧?然后他会去有各种各样的一些machine learning的一些algorithm叫deep understanding。

比如说random forest对吧?和decision tree有什么区别对吧?然后你有很多有些什么word vector还有很多那个呃什么叫降维的一些操作吧。因为有的时候high dimension你在large scale的data processing底下是不work对吧?

你怎么去做machine learning at scale对吧?怎么去降你的dimension降到一个能够接受的程度从而能够在生产环境底下能够用所以这些东西可能是data scientist他们应该更多要focus的东西。

所以这是我的一些分享吧关于这三个role就hopefully大家能够有一点点data understanding吧就是关于这几个role的区别。呃OK这个领域其实是比较open的一个area吧就是关于AI这个东西谁都在谈人工智能对吧?

自从那AlphaGo那个东西出来之后这个东西就感觉变成人工智能的第二次了对吧?第二次人工智能失败过人工智能都失败过两次了对吧?这是第三次当然也有很多人看衰对吧?为什么不可能这第三次继续人工智能进入冬天呢?

对吧?当然现在很多人都是持乐观态度说现在GPU对吧?然后包括我们的hardware我们的这个computer的power越来越强了。像过去可能是说没需需要一个超级计算机才能做的一些数据处理现在可能一个单机甚至把几个普通的PC搭成一个cluster都能处理。

所以说这是有一些硬件方面的红利吧然后算法上面也有很多一些突破对吧?比如说李飞飞同学的那个叫Image Lab对吧?在图片识别、语音识别领域都有一些非常成熟的算法。

就说这是一个比较能够比较好解决的一些一些领域吧当然有一些那个更多的一些认知强人工智能领域现在还是没有比较好的突破但是就是说这个趋势大家还是没有办法忽视。其实我作为一个大数据工程师每次也得去紧跟这个AI的这个trend吧你万一哪一天AI这个东西能够自动写程序怎么办对吧?

你这还在吭哧吭哧去学什么Spark、Flink、Storm天天跟一些Open Source Community热此不比的去follow这个industry的一些trend但如果哪一天说这个东西能够被automate你不需要这么多码农去写这些spark或者map reduce code那你总得干点别的吧对吧?

所以你得understand

现在到了什么阶段?第二个就是说,现在有很多公司,特别是些startup都在谈那个呃叫什么,叫full stack idea,或者叫devops,对吧?就是说你开发加运维,你得是一体。然后full stack意思就是说从UI、API、database加backend,你得最好是一个人。我们希望招一个人,你什么都可以干,对吧?当然,你从数据工程师的角度来讲,其实也可以认为有full stack的data engineer。所以对于这种engineer来讲的话,就是你得做data engineer的工作,你也得做machine learning的工作。

因为很多时候,如果你这个角色是两个人,你这个开发也好,或者说communication好,这个效率就不够不够好。你会有很多的communication,有很多的gap在那。如果你这两个role合并在一个人身上,你可以想一下,这个开发或者实现implementation会非常高效。所以这也是一个业界的趋势,大家希望一个人能够掌握越来越多的技能。当然,就说你如果是一个像我的背景,就是我是一个大数据工程师,我不可能说去读一个PhD。

当然我确实有这个想法,但是就说你你的bandwidth是有限的。你又很有可能说你百分之七十在做一个big data的engineer,在engineering effort area去继续去深挖。但是你可能得花上百分之三十甚至四十的时间去慢慢弥补一下自己在machine learning或者deep learning那个领域的一些不足。

所以说现在我们很多人,包括我也在encourage我自己的工程师。我们有十几个工程师,我甚至在鼓励他们:你们去要不要去跟着Angel NG同学去学学Machine Learning?他们不在Coursera那边有一些Machine Learning的一些Introduction那些课嘛。甚至我在鼓励大家去学TensorFlow,你们去拿TensorFlow把我们现在基于那个Spark Machine Learning Library写的东西能不能重写一下。

看一下是不是这个效率会更高,然后这个开发效率和那个以后Maintenance会更好。甚至我在鼓励很多Team说:OK,能不能给我们去串一下GPU?虽然贵,但是雅虎作为一个大公司还是有有钱买了几十台还是一百台机器的一个GPU的一个cluster。所以我们也有Team的人在去try一些那些拿GPU去做一些machine learning或者model training的一些工作。

所以我也是在鼓励我们Team的人,包括我自己,尽量去慢慢把自己的这个area去extend到machine learning和deep learning。这样的话你是一个更健全的一个大数据工程师吧?OK,这是我今天所有的分享吧,所以我把我把这个东西交付给我们的主持人。

主持人你take over这个吧?嗯好的,谢谢老师今天给我们带来的分享。然后大家先如果有问题的话在Q&A里先打一下,让老师先来休息一下看一下我们的问题待会儿再集中解答。那我们先来介绍一下再来做一下我们课程的一个介绍。这个是CS502大数据工程师的直通车课程,会带领大家在三个月时间内做三个工业级的大项目。

第一个月是Big Data Infrastructure的强化训练,搭建一个数据的实时分析系统。第二个月就是在Apache PMC Chair Daniel老师的指导下做一个Apache开源社区的一个Contributor,然后来做开源的项目。在经历了两个月的高强度训练学习之后我们第三个月是在老师的指导下跟工业界的真实项目相结合做一个实战性的项目。

这个是personalized,大家可以根据不同的兴趣进行不同方向的选择。同时我们也有非常强大的一个资源的支持比如说有大量的内部学习视频的资料,然后还有专业的career service对大家提供从简历打造到面试指导的服务。大家感兴趣的话可以扫一下上方我们课程组David老师的一个二维码然后加一下他备注大数据可以进行一个详细的了解咨询。

那好,那下面的时间就让老师来给我们做Q&A环节的一个答疑啊OK我看到大家问的挺多很好的问题。我我不知道我有没有时间把所有问题都问完哈这个东西有一个不好的东西,它没有一个投票系统其实应该让大家能够去rank这些question。就sum up最多的应该把它rank更高一点这样就说回答一个问题更efficient一点OK anyway我就按照那个先进先出吧就是先问的人我就先先回答吧。

首先,实时数据怎么呃怎么用大数据?这个其实我不知道你问题具体是什么意思就实时数据。比如说你想那个我没有提到物联网这个东西IOT对吧?其实对IoT这个领域来讲的话,它天然产生的数据是实时的。比如说你的无人驾驶的汽车或者你智能家居里面的冰箱、洗衣机、空调都会generate数据都是从传感器接出来的。

关于你这个系统的能耗啊电耗的电量什么的,所以这个东西当然是属于大数据就是说我刚才提到用Kafka可以去接很多streaming的data。一个一个solution就是说你这个sensor可以去talk to这个Kafka queue把这个数据去发到这个data highway里面。然后我们下面的data processing system去accumulate这些实时数据然后再去做处理所以当然你会有一个accumulation的过程。

你不可能说直接去用实时的,当然也有直接用实时的就比如说我的Team有一些做pixel。这就有一些domain knowledge在里面就是有些实时数据,比如一个简单例子如果你这个人在一秒钟前或者五十毫秒前搜索了一个关键词。比如说我搜了前几天日食OK我要去买那个叫eclipse glasses对吧?你搜了这个所以这个时候我可以立刻秀一个广告给你。

比如说亚马逊正好在卖那个日食的那个墨镜,我可以直接当场就给你在你的页面不管你在看什么页看什么内容。当场给你秀一个那个glasses那你就很有可能就去点了对吧?这就是实时数据的一个大数据应用OK。请问这里数据每一块都是公司内部一个组,还是说一个组做好几块?

OK这是个好问题。其实看你是什么样的公司吧一般我了解一些大数据工程师startup的公司,它是end to end就是说它没有一个所谓的horizontal的team。就是一个水平的team一个data infrastructure team就serve不同的application,它一般是每一个application像一个feature team那样end to end什么的都是自己build。

当然你像雅虎我的Team其实就是一个infra data infrastructure team我们做的user profiling是serve整个雅虎的广告平台和个性化平台。所以其他的Team其实他们都不需要再重复做这块事情所以我不知道这个answer你的question没有,所以这是depends看你这个公司的规模以及你公司在这个架构上面是怎么design。

请问Big Data找Machine Learning部分招的人多吗?一般做Machine Learning人有多少啊?呃这个挺多的吧你一定要我可以给你讲讲我们这边的一个Ratio吧就是一个数据工程师和machine learning data scientist的一个比例。我的Team大概有十个左右的data engineer然后我们跟我们一起工作的data scientist大概有三个左右,所以ratio大概是十比三吧。

但是我不知道其他公司这个比例怎么样因为其实也取决于你这个系统或者这个项目是scientist heavy的还是说engineer heavy对吧?因为有可能你这个系统并不复杂,复杂的是你的算法。那这样的话你可能要需要更多的data scientist、machine learning的一些expert去join你这个Team。你看我的Team其实更多的是focus在这个infrastructure上,所以我们为什么会有十个data engineer但是只有三个data scientist。

会Java拍摄会基本但不熟练可以吗?OK不熟练我不知道你这个熟练指的是什么意思啊你如果说只是呃你如果只是会写一下Hello World这个东西那当然是不够的。我建议大家就是说能够参与一些开源的一些项目就比如你去GitHub里面搜一些比较popular然后你又比较感兴趣。那当然不能太popular如果太popular的话你想成为committer那个门槛还挺高对吧?

就比如刚才有个同学在问这个哦对底下这个人问问Caravel Super Set这个东西其实你现在去commit code还不算晚。现在我看到很多国内比如淘宝啊像小米啊他们也有很多contributor在contribute code所以这是一个Python的projectCaravel是Airbnb Open Source的一个data visualization的工具吧非常好用。

底下可以对接Druid也可以对接Hive,现在好像也在做那个Presto的一些integration所以大家可以去看一下这个项目。如果对Python的开发感兴趣的话Java我倒还真不知道有什么比较没有那么popular但是又值得一看的open source project你们可以去GitHub去看一下吧。所以我建议就是说实战经验很关键你去你看书去学没什么用你得去做一些实际的项目这样的话会让你这个编程技巧和熟练程度会越来越好。

OK想转行到互联网怎么才能先找到实习?实习是不是主要面向在校学生?呃对至少在雅虎是这样的。实习我们招的都是NCG就是一般是比如说研二、研三,我们招的一般是Summer Intern就是你一个暑期过来做三个月。第一个问题想转行到互联网怎么才能先找到实习?所以这个问题有点tricky因为一般来讲的话。

如果说我们有从一个hiring manager的角度来讲哈,如果我有足够的CS背景的candidate我有什么很强的理由会去看一个非CS专业的人?就是说去找找这样的实习生,所以说你得想想这个你得有些东西能convince hiring manager把你招过来做实习。这是你要问自己的一个问题,所以说这也是回到我刚才那个东西如果比如说我从我的感觉来讲哈。

如果你有一个人投了个简历过来,我一看OK这个背景可能是你做C语言的对吧?你做那个土木工程的然后哦不是CS的,但是我一看哇非常impressive你这个人做了很多open source project有很多很多的GitHub的项目。然后你直接把你GitHub贴在那我点过去一看发现你是非常多的好的项目的committer,然后你的那个commit的code quality非常高。

那我没有理由不不去hire你啊甚至我会prefer hire you more than一个CS的candidate但是没有太多的实习经验。所以说实习不是项目经验对吧?所以这是depends取决于你能offer什么给你的employer,给你的雇主对吧?专业当然是一方面但是如果专业不再优势的话你得有别的东西能convince他。

对于新毕业的毕业生在准备coding上具体而言,语言本身还有什么其他内容?除了提到的设计模式OKso呃design pattern这个我没有特别好的建议了。我建议大家去MIT BBS看一下吧一亩三分地还是什么?你去那个地方看一下面经吧。因为取决于你跟你去什么样的公司面试不同公司面试的风格其实差挺多的对吧?所以你最好是有的放矢不要去盲目的去说。

我看有些candidate去把那个什么Introduction to AlgorithmAndy突然读了一遍甚至还有人去读高纳德老头子的那个《计算机程序设计艺术》。我是觉得你这些太浪费时间了我都没有把那些书完整读过一遍我曾经try但是try了花了一个月之后发现就放弃了因为太我感觉我可以拿它当字典去查,但是拿它当工具书啊教科书去读这个确实没时间。

OK老师能聊聊AI本身呢在哪几个方面可以给公司带来盈利?呃现在有些Smart Home以外的市场并不大。OK智能家居其实AI和某些领域在互联网公司里面至少我刚才提到的就反复提到的两个领域,就是说个性化和那个定向广告投放这两个领域是直接能带来盈利的。至于你说的一个智能家居美国这边我倒知道有些有一家公司叫Houzz还是什么玩意我好像看到他们这个Bit Tiger那个slide里面提到这个公司。

他们好像有一些关于智能家居的一些尝试吧他们是做装修的,但是我知道国内有很多包括阿里巴巴、很多政府机构都在做智能家居甚至智能城市。就比如说你电线杆是你可以认为是一个infrastructure对吧?到处都有电线杆什么为什么不把这个电线杆和那个铺网线、铺电话线合二为一呢?或者说在电线杆上装一些sensor可以去解决一些security的一些issue。

类似这种想法其实是有,但是确实市场不是特别大另外如果学习一些现有的框架如何更能在面试中用到?OK这是一个好的问题。因为我刚才提到就是说对一个NCT来讲你在简历里面啊对这是我要提醒大家的这是一个red flag。有时候你如果在你的简历里面放了这些关键词并且你说OK我会这个会那,你就必须Be prepared。

面试官肯定会问因为你提的这些关键词可能就是你的简历被筛选出来的原因然后被筛选出来这个面试你Team的人肯定是这方面的一些专家吧行家对吧?他一般一面试官的心态你可以认为是这样就是说哎我这个地方挺懂了,你居然敢说你也很懂那我们来PK一下吧。当然这有点夸张哈但是就是说很多面试官就这么个心态,他其实有很多时候就是一直要把你问倒为止。

但是也不是说你问到你不会了他肯定就觉得你面试不过,他其实很多时候就是说他会一层一层的往底下问会有不断有follow up question。就是你有可能过了前面一级、两级两个question他可能就会觉得给你过了对吧?他可能会问第三个第四个question你不会他就哦 OK面带微笑。

啊终于被我问倒了吧?但是他还是会给你一个比较高的分数对吧三点五或怎么样让你pass。但是就是说你千万要记得就是你提到的东西你一定要准备好你说你会Hadoop、Spark、Kafka你在简历里面提到你会的那一部分,你必须要准备的比较充分。否则的话你说会被问到哪怕coding面试过了他可能会觉得这个人的简历里面的水分太多,可能会觉得这个人不太诚实啊或者说对自己的ability有点overestimated。

这可能会变成一个red flag。

专业是金融,可以从事大数据工作吗?啊,太可以了,FinTech呀,对吧?智能炒股啊,智能投顾啊,华尔街不一堆干这个事儿吗?对吧?其实我在周末也跟一群Google的几个好朋友也在做这些东西。就是也是觉得看那个沃伦,看巴菲特那老头儿不太爽,对吧?觉得我们可以,是不是可以颠覆一下?就是觉得通过大呃 big data 的一些一些 insight,看能不能去。做一些长线投资,当然也也需要很多这个金融领域的知识,所以说,呃,我们可以线下交流吧。如果你的专业是金融,其实正好跟我们可以互补。

在职的话,怎么找 part time 的 Ph D 的机会?哇,这个 question,这个我也在,我也想知道这个呀。因为我现在也是在职,我也想有一个 Ph 呃 part time Ph D 去学一下 machine learning 和 deep learning,所以我不知道,对吧?我我我也想知道。面试前除了花刷题还能做什么?呃。因为我没,我有,我有,我大概有七八年没面试了,所以我也不知道,我也给不出一个比较好的建议吧。所以我的建议还说你去一亩三分地和 MIT BBS 问吧。

Data Engineer、Data Scientist 数学背景要求高,这是一个问题吗?这是一个 comment 吗?这是一个 common,是个问题,我感觉是个 common,啊,OK,我假设你后面还有个妈,好吧,高妈,OK。呃,data scientist 对数学背景肯定要求会比较高,特别是统计、概率这些东西,对吧?概率论。但是对于 data engineer 来讲的话,对数学背景要求我觉得不是特别高,就是你有一些基本的加减乘除得会吧。然后嗯比如说一些基本的一些就是说白了一个高中数学水平吧,就应该足够能应付呃 data engineering 的对数学的要求了。

但是data scientist你可能至少得是大学甚至研究生的数学水平对吧你得有些线性代数和概率论的一些一些理论基础吧。对于没有基础的学生,如何快速切入到数据工程师的状态?这些技术有没有学习优先级哪个先学哪个后学没有基础的学生OK所以这个OK那很好我可以正好给Big Big Tiger做广告吧你可以跟着他们去参加一个课程因为通过刚才那个呃我们主持人的一些介绍其实他那些课程包括设置包括他这个呃他提到了很多大公司的project甚至包括阿帕奇的呃一些committer的一些培训我觉得这个都是非常好所以你可以考虑看看他们这个课程对你进入到数据工程师这个领域有没有帮助。

能否推荐几本不错的大数据书?哦,OK有一本书OK我不知道大家能不能看到我的屏幕我可以给大家Google一下那本书我是比较推荐但是说它不是一个偏技术的书。啊,那本书的名称好像就叫Big Data呃Big Data然后一个蓝色封面的书看一下Image呃。OK这个我可能现在一时半会儿找不到呃我不知道到时候呃可能会有个群吧如果我找到了我可以把那本书放到那个群里面。

小王老师刚才提到的程序员素养具体指什么?OK这是个好问题其实呃编程的素养其实你在面试的过程中你会看到一些面试官比较关心的一个就是说你基本的一些算法对吧。你一些呃排序啊或者说就是那些算法其实还是很重要你得对一些基本的data structure、basic algorithm有些了解甚至你可以去自己看一些那个Java的那些API就比如Java有些方面的一些data structure,比如HashMap、ArrayList、TreeMap对吧。你像HashMap它是无序的TreeMap是有序的为什么它有序?它怎么实现?

对吧,你其实是可以通过去读一些Java的一些Native API的源代码对这些数据结构、一些算法有些更深的理解。其实我我有时候经常会问一些开发者对吧,比如说那个trie map怎么实现?你能给我讲讲如果你去实现一个trietrie map就是一个有序的一个hashmap你怎么实现不一定要你写code的但是你得能讲述一些呃你的idea出来。甚至比如说你像priority queue对吧,它其实对应到数据结构里面就是一个堆栈对吧一个栈一个大顶堆什么之类的。就比如这个东西如果让你去实现你怎么实现?

你时间负载度是多少然后空间space的complexity是多少对吧。其实都是平时虽然被人家问呃面试的时候问这些算法你会觉得这个对平时的工作有什么帮助但其实工作中确实会有帮助因为你写Java code的时候你有不同的data structure可以去选。为什么你选Tree Map不选Hash Map再包括有些那个呃concurrency之类的东西对吧,当然人家说OK你这个data structure是不是thread safe不是线程安全的。为什么就是线程安全到底什么意思对吧,你在做这种concurrency编程到底有哪一些需要你注意?

其实这跟你操作系统里面的一些信号量啊什么的其实是相关的对吧,你要做一些临界资源的一些加锁什么之类的。所以其实跟你平时学的东西很实际你平时工作确实要有这些concept。Spark Streaming啊OK这是一个这不像一个question OK那Skip我有些工作经验一直在做传统型ETL最近学了Big Data Boot Camp嗯很多Big Data那些不知道怎么样准备这些问题。对 E T L所以E T L就是说呃因为很多同学可能都不知道ETL是什么的缩写,ETL是Extract Transform Load的缩写对吧。

其实这是一个传统的数据库领域的一个词就是基本上你把数据库的table从一个table转到另外一个table可能会经历这些过程对吧,提取Filtering Projection然后再load到另外一个 table。要做一些staging现在就是说也被广泛应用到现在big data里面因为有很多ETL工作去做一些pre-processing吧做一些预处理。所以回回到你的问题吧不知道准备这些问题呃这个笼统回答我也不知道该怎么去回答你这个问题。所以你可以看一下我刚才推荐的那些东西吧因为我不知道你的背景什么如果你的背景是传统的那个database engineer或者说是呃传统的data warehouse engineer。

所以你可能先得学一下这个现在主流的一些计算平台或者框架吧呃我建议你可以从Spark学起当然你可以先了解一下Hadoop大概这个MapReduce这个呃framework的呃principle是什么样子对吧。因为Spark其实也就在Hadoop的基础上做了一个RDD对吧很多data不会去spill spill到disk而是在in memory里面去流转所以它的效率会高很多。所以说你得understand一些这种东西呃然后还有什么Storage对刚才提到那个NoSQL database你肯定得去看一些这个主流的database的一些文档吧。

比如说Hadoop啊、Cassandra啊还有一些Key Value Pair或者Document database的一些最主流的一些数据库,比如说MongoDB。比如说主流的 Key Value Pair就是说呃HBase、Cassandra或者以Memory的像Redis这些你可能得去了解一下。然后大概这些技术要了解吧其次你可能要找一些实际的项目看能不能有机会去练一下手就真正understand这些系统怎么应用到一个实际的项目。那实时用什么数据库?Redis,对我们用Redis对这个也是个比较popular的一个东西吧但是Redis一个比较好比较不好的一个东西就是说呃怎么讲?

就是我我可以大概分享一下我们现在一个系统是怎么迭代。所以一般一个分布式系统会有多层的cache就跟你CPU有L one L two然后到呃RAM对吧你的主memory然后再到你的disk然后再到你的remote的 disk就是网络的存储对吧。其实一般来说你Redis是第二个要考虑的一个数据库一般我们要考虑的是local cache对吧,就是你比如说run一个Java的program对吧一个进程你首先要看看用的就是说你的on heap memory你JVM mem呃占上的那个内存。因为这个内存就是存储效率更高并且你不需要去做这个序列化反序列化的开销。

你存Redis的话多半来说你的数据是serialize对吧,是序列化的数据你从里面取出来虽然很快但是你要pay the penalty of deserialization对吧。所以一般Redis是说实在我们的local memory存不下我们才会去extend到Redis如果Redis都存不下来了OK那就在存到HBase。如果HBase再存不下来我们再存到HDFS所以它是有不同的那个级别的就说离你的CPU越远这个存取存储的效率越差。开源的大项目哦还这么多questionOK那我们呃主持人你mute了吗?

呃,我是继续一个个过还是你prefer什么别的方式嗯您可以选一些您看的比较感兴趣的或者是觉得大家可能考虑比较多的OK好那我可能会搞快skip一下吧嗯。开源大数据框架在现在工具对学生来讲应用更广。嗯,AWS OK,开源的大数据县城呃这个我对因为因为我们没用用 AWS其实雅虎用的还是私有云吧Private Class我们有自己的Data Center。所以我建议大家去看一下AWS的官方文档吧包括那个亚马逊有一个叫他们有一个类似于哈布沙米的会叫什么 AWS V in vent还是什么东西对吧你可以去看一下那边的一些slide看一下最近比较popular的一些framework是什么。

然后有一个东西我觉得比较有意思大家可以去看一下有个叫呃Lambda的东西它其实是相当于是做那个micro service对吧就是说你的code你不需要去嗯maintain your code就是说它会去on demand去call your code。所以我建议大家去看一下那个Lambda那个是一个比较好的一个micro service微服务的实现有video实时数据处理吗?这个不是我的一个呃领域吧所以这个我没有太多的comment。生态环境ML是调研还是自己学算实验算法或者一个paper?

这个都有吧就是说你看你用什么东西比如说你用Spark的话Spark本来就有一个ML Lib Machine Learning Library就是一些很多传统的一些Machine Learning算法其实Spark已经帮你实现好你可能直接调就可以了。但是你如果用Storm或者MapReduce可能你的Model或者Whatever的东西你得自己去实现在Offline去Train your Model Train好然后再拿到那个Online去做score。May I ask, company instructors kind working for?你说是我吗?我现在是在instructor是我对吧OK。

我的名字叫刘凯然后Kevin Liu你可以在LinkedIn上找到我 Kevin Liu。然后我的company是雅虎现在改了个名字叫Oath OATH但是其实我们是我们是雅虎OK。根据你的经验IT特别两个的在哪些需需求量更大?OK这还是跟前面有个问题有点类似就depends depends上的项目对吧。有的项目可能是science heavy的项目可能就说招的data scientist更多有些可能data engineer更多其实我觉得现在有个趋势就是说很多公司对data scientist需求可能需求量更大吧。因为大家都在谈AI first对吧所以都想去抢占这个制高点或者说想去成为一个在这个风口底下的一头猪对吧。

所以说想被吹起来所以说要招大量的data scientist你好翻译一下这个该怎么入门?左手哦,这个too general所以我skip吧。硅谷哪些公司在data engineering方面做的比较好那当然我们公司是一个啦对吧我的team其实是在data engineering方面是在雅虎是名列前茅的一个team然后当然不用说FG L我不知道Facebook和Google肯定Data Engineering做的当然是比较好。然后我知道有些创业公司比如像Uber和Airbnb、Pinterest这几个独角兽其实Data Engineering做的也比较好。因为我认识一个Uber的一个哥们儿叫邵真对吧这也是我比较小崇拜的一个人吧他是在Data Big Data领域是做的比较成功的一个哥们儿。

他现在之前是在Uber做那个Data Infrastructure是他们那边的一个Principal Engineer吧所以我觉得有他在的话我觉得Uber Data Engineer应该做的不会特别差。像Pinterest应该也做的还不错但是Pinterest现在可能大量的effort放在那个怎么去赚钱对吧所以他们可能在infrastructure上的这个投入可能会没有像Uber和Airbnb那么多。亚马逊在大数据公司工作机会怎么样呃,这个我还真不知道因为我对亚马逊的东西不是特别了解。因为众所周知他们的culture不是特别好所以我基本上也不太关注他们的工作机会吧。

请问这个开源项目啊大家可以ignore我的comment啊这有录像是吧OK,这个录屏OK我不应该说这个。嗯请问这个开源项目如何找到并加入呢呃你就去GitHub去搜吧GitHub里面就GitHub点com里面你可以找到很多比较好的开源项目。你也可以去Google对吧你就Google比如说popular的Python projects on GitHub或者popular的Python project对吧on GitHub你可以就这样搜搜完之后Google应该会告诉你哪些项目比较popular。但是我建议大家不要去选那种最popular因为最popular它这个门槛会比较高。

会逼着你去学很多什么Java、Jira呀什么的你的整个process是什么样子?会搞得比较严包括code review啊、unit test啊。你可能还没有这个commit的一行code你就被已经折腾个半死了对吧?这是我的一个经验吧。你可以找一个正在呃冉冉升起的一个新兴项目对吧但是又很有前景但还没有变成一个阿帕奇的顶级项目甚至都没有进入他们那个叫incubator那种项目对吧。你可以找一个快要进入但还没进入的项目去做练手。认真data里面的CV和CV需要注意哪一块呃这就是就是我刚才画的那三张图嘛对吧你做。

哦SDE对你做普通工软件工程师和做迭代的店就看我刚刚才那个三个pie chart那个地方的嗯common部分和差异化的部分你就去强调你那个差异化部分呗。对迭代的店你就强调我很牛我懂我非常懂啊Hadoop非常懂Spark然后我做过很多相关的big data的项目对吧普通软件工程师你就说OK我对这个Java

对于一些各种各样 fancy 的框架,对吧?什么 sprint、什么乱七八糟的,其实我都不太了解这些东西。你可以写那些框架,你很懂。但是对于大数据这种内容来说,可能不需要了解这些东西,对吧?所以就突出你在这个角色底下的一些强项。阿姆达最近出了 PhD 实习 Data Scientist,哎,那就是给其他人的一个 FIFI I(注:此处为口语误读或特定术语,保留原意),对吧?在生产上 ML 哦,这个我已经回答过了。用 Java 的 Database 是主要写 Function 嘛?呃,你可以这么认为吧,但其实你比如说你要写一个 Spark 或者 MapReduce 的 application,你不光只是写 function,你还要去写很多 Java class,去实现、呃、去 extend 一些 MapReduce 或者 Spark 提供的一些接口。

不叫接口,叫一些抽象的类,对吧?比如 MapReduce 里面有个叫 Mapper、有个 Reducer,你得去实现这个。我建议你去看一下那个 MapReduce 的一个 Hello World 的呃例子吧,就是 Word Count、数那个计算词频,你就知道我说了什么意思。就不是简单写一个 function,你是要实现那些具体的 class,呃、然后放到这个 framework 里面去 run。能不能回答一下我的问题?你的问题,哪个是你的问题?这底下这个吗?OK,Data Warehouse 你有上过课,但是没有实际经验。然后问题呢?OK,那待会儿我们再再说吧。不好意思,我没有找到你的问题在哪。

传统 Data Engineer 转 Big Data 会算 experience higher 吗?考核呃,对啊,当然会算 experience higher。但是可能很不幸的是,可能会 apply 一个 discount 上去。因为呃、就是不是算相关大方向算相关,但是你可能没有一个 direct 的一个 relevant area,对吧?就比如说你从亚马逊有个工程师,他可能就是做跟我们非常类似。也就是说,他做的项目和我们的项目的相似度几乎达到了百分之八十五左右,对吧?那所以他的五年工作经验基本上可以 translate 成我们内部工程师的五年工作经验。

但如果你是传统 database engineer,当然这些 mindset 和一些 concept 肯定跟现在呃 big data 领域是比较都能用得上。但有可能,比如说你的十年工作经验可能会打一个折扣,比如说变成七八年。呃、就是 direct 相关的一些工作经验是这个样子。用户画像是基于什么原因考虑决定选用 Kafka 而不是其他?哦,这是个这是一个好的 question。所以我也很想知道,Jack 同学是 NCG(New College Graduate)还是一个 Industry Hire?如果我是一个 NCG,那我觉得你问出了一个非常好的问题。

所以呃、因为很多同学可能不知道 Kappa 和 Lambda 的区别吧,所以我大概给大家讲一下。就 Lambda 传统的 Lambda 是当年啊、是谁提出来的?是那个 Jason,Jason Marais 同学提出来,就是那个 Storm 的作者。但是他的一个想法是什么样子呢?就是说你的一个大数系统,你可能面临的数据处理有两种不同的方式。一种就是说是批量数据批数据处理,对吧?就是那些数据一天来一次、或者一周来一次、或者一小时来一次,就是成批过来的。还有一类数据就是说 streaming 的流式数据,它可能是源源不断过来的。

就比如说你像 Twitter,对吧?它会源源不断会有一些 tweets 过来,它其实是更有点 naturally 是一个 streaming data。所以 Lambda 架构就是说我用不同的 framework 去处理,分别处理流式数据和批处理数据。就比如说我用 Storm 去对接 Kafka 去处理流式 data,用 MapReduce 或者用呃 Spark 去处理 batch data。然后我们通过一个 common 的 database,比如说 HBase 也好、或者 Cassandra 也好,去 generate 一个 consolidated 的 view。

就是把那个数据再 hook up 起来,然后对外界来看到的、呃、对外界来说,你看到的是一个统一的一个用户视图。这样你并不知道,就是对你来说是 transparent,背后有两套数据处理系统。这个东西是一个经典的 Lambda 架构的一个 design,也在很多公司的线上系统在用。然后为什么我们用 Kafka?就 Kafka 跟那个 Kafka 是 LinkedIn,呃、是那个 Kafka 的作者提出来。他当时写了一篇呃博客,对吧?去 question 那个 Lambda 架构。

他倒不是说反驳那个东西不好。他只是说,为什么我们必须要用两套 framework 去处理,分别处理 batch 和 stream?为什么不能用一套?因为这也是基于他自己的一些呃背景嘛和他的那个经验,因为他是做 Kafka 的,对吧?他是对 streaming 这个东西有比较深的理解。所以他就 proposed 了一个 Kappa 架构,说我们用一个 streaming processing 的 framework 同时处理 batch 和 streaming。这样的好处就是说你的 maintenance cost 会比较低,因为你不需要 maintain 两套系统,对吧?

第二个就是说你同样逻辑你不需要写两遍。你像以前我们的系统,就是你同样的逻辑、同样的 data 处理,你得给 Storm 写一套 code,给 MapReduce 和 Spark 又写一套 code。因为底下那个 API 不一样,你得写两套 code,所以 maintenance cost 会非常高。所以 Kappa 的话,你用一套的话,在 development 的这个 cost 和 maintenance cost 都会更低一点。所以这也是我们当时呃 team 为什么第二代画像决定用 Kappa 去做。

其实说个题外话,像呃阿里巴巴有一个 P10 的哥们儿从 Facebook 回国的,他们其实用那个 Flink,基本上跟我们做类似的事情。我们没有用 Flink,因为 Flink 还是一个比较呃不是那么 mature 的一个基于 Kafka 实现的呃 framework。我们现在是用 Storm 去处理 both batch data and streaming data。然后阿里巴巴是决定用 Flink 做这个 Kappa 实现,所以但是 idea 是基本上是差不多的。就是都想只用一套 framework,不要用两套。好,OK,所以这个地方我觉得花了一些时间吧。

不是统计,或者是要自己说含金量怎么样?含金量那就取决于你这个 project 到底是解决什么问题,以及你自己在这个 project 里面的角色是什么样子。如果你是这个 project 的一个呃 key contributor,然后这个 project 有做得非常成功,那当然含金量会比较高。如果你这个 project 很相关,但其实是一个 hobby project 或者一个 toy project,那当然含金量就不会特别高,对吧?所以也是 depends。国内如何找硅谷的工作?呃、这个我知道,以前我在北京的时候知道,有很多人通过 H1B 都面到了美国这边的公司。

Facebook、Google、Amazon,然后 eBay 都有,其实是有很多机会的。你就直接找人内推呗,找你在这些公司认识的师兄师姐推荐你呗,对吧?你就可以在国内可以直接去面。这个倒、我觉得这个问题倒不大。但是唯一的问题就是现在 H1B 抽签更难了,对吧?Data Science 知道哪些技术可以 Stand Out?哪三个技术?OK、三个技术 OK。呃、第一个 Hive 好吧,Hive,因为大家都喜欢用 SQL 去写一些 Query,对吧?那你就 Hive 你得会。

第二个的话,你如果能懂 Spark,那更好了。因为 Spark 里面有 Machine Learning Library,其实很多时候你可以快速做一些原型开发,你不需要去要这个工程师帮你去写 code。你自己可以做一束 code、呃、写出 code 能够做一个 end-to-end run system,这就非常 amazing。就是从我们角度来讲,如果一个 Data Scientist 能做到这第三个的话,你如果能了解一些那个 data visualization 的工具。比如说刚才有个同学提到的 Caravel,对吧?

你能够把你的一些 data 能够 visualize 出来。那就比较牛逼了。所以我的推荐就是说,一个 query language、query system 的 experience 就是 Hive;第二个就是说呃 Spark;第三个就是类似于 Caravel 或者那个什么各种各样的语雀类型的一些工具吧,比如 D3v、DotJS 这类。怎么准备面试?请把问题说清楚好,我看不到别人怎么准备面试哦。我其实已经回答过这个问题了,我没有太好的一些建议吧。

我建议大家去看 MIT BBS 和那个一亩三分地吧,那个地方会有更好的一些 recommendation 推荐。想问一下,做 NCG 界面的 Java 翻译的这边什么方面还着重比较有竞争力?这个怎么讲?你练 Java,我建议就两点吧。一个就是你还是去刷刷题吧,至少那个 easy 到 medium level 的 question,你都尝试用 Java、不要去看 solution 去实现一遍,对吧?这是一个去练练 Java 这个东西。第二个就是还是说你找一些像样的一些项目,不用特别大。

但是就是说能够帮你去练习一下你用 Java 去实现一个一个完整的系统,对吧?因为这样的话你可以有一些呃具体哪些方面我可以讲一下吧?就第一个就是你的 design pattern,对吧、design pattern。还有一个就是说你一些常用的数据结构,你知道怎么在什么样的时候用什么样的数据结构?比如说你那些常用的 hash map 啊、array list 啊。然后什么时候要用 tree map,不用那个 hash map;什么时候要用那个 concurrent hash map,不要用 hash map。

对吧?然后你什么时候你要会用多线程去做编程,对吧?那个大家可以去 Google 一下,有个东西叫 Future,对吧、Future。是在多线程编程里面用的比较多的一个概念,然后怎么用 Future 去做一些那个 multi-thread 的一些 programming。然后你得知道用 Java 怎么打开文件吧,对吧?I/O 方面。然后你可能得大概了解一下 Java 跟 MySQL 这种 database 怎么去交互,这些比较基本的一些东西吧。觉得你得有一些基本的一些一些了解。

Kappa 怎么拼?K,OK、这就是几个希腊字母,对吧?Lambda,Kappa。你是 K A N... 我还真你突然一问啊、突然 K A M P A 吧,应该是这个吧?卡卡,难道不是这个吗?应该是这个。卡帕兰达、卡哦,就是 KAPPA 对,KAPPA。OK,我们看还有多少 question,看能不能高速完。What would you recommend? 八年哦,OK、啊,很荣幸这里还有 industry 的支撑人是在这个 call 里面。dot net C sharp,OK、不好意思我对微软这些技术一窍不通。

因为我刚才在这个 talk 里面提到,我从来没有在 Microsoft 平台底下写过一行 code,所以这块我真给不出一些 idea 吧。所以我的建议首先如果你不反感的话,我建议你先 move 到 Linux 平台来。对吧?去学一下 shell、学一下 Linux、学一下那个呃这些东西。因为我觉得大部分的互联网公司不是用 Microsoft 那一套东西在 production 用,对吧?包括这个 AWS,对吧?像样的一些 backend system 其实都是在 Linux 上面去 run。Hadoop 不是也有吗?后啊、这个是也有,但是怎么讲?

这个一人得道鸡犬升天吧。因为 Spark 现在比 MapReduce 更 popular,对吧?所以说 Machine Learning ML Lib 比马后(MapReduce)更 popular。所以这个、这个怎么讲?反正你也可以用 MapReduce 吧,因为我们也有很多项目在用这个。但是就是说大家更愿意、就是特别你招人的时候觉得你还是用 MapReduce,别人就因为你用的这个工具都不 join 你的 team。你如果说我在用 Spark、用 Machine Learning,或者我在用那个 Flink,他们就冲你这个技术他就来 join 你的 team。

因为呃、举个简单例子当年三四四年前吧,当一个 candidate 听说我们我们 team 还是用 SVN 管理 code、没有用 GitHub,他就把我们 offer 给拒掉。所以这个听起来有点搞笑,但是就是说很多 candidate 他实际上有点偏那个工具控的感觉,对吧?他如果对一个工具非常喜欢、对另外一个工具非常不喜欢。他就一听你 team 在用一个他非常不喜欢的工具,就这一个理由、他就不愿意 join 到你们的 team。所以这个这个东西也是比较重要。

Data visualization 用的很少不少啊。这个我知道,L L(注:此处可能指代特定工具或口误)这是 Airbnb 开源的一个东西,但是很多 startup 包括很多主流的公司、像 Netflix、雅虎。然后我知道 Google 没有用,然后我知道 Facebook 有很多项目也在用这个。因为我有一次看他们的 presentation、秀出的那个图,我一眼看出来我觉得你这个是应该是 Caravel 输出。呃、他那个截屏一看就 Caravel 那个界面。Data visualization,呃、这个我们用的不多。

第一个是说这个玩意儿是一个商业化的东西吧好像是要收钱的,对吧?然后我们 team 比较穷。我们一般就说能能有免费的东西我们就用就不会用收费。当然、还有一些类似其他的一些商业化工具吧,比如说有个东西叫 Looker,对吧?Looker 然后 Looker 加那个叫 Redshift,对吧、打包起来去掐我们非常非常贵。我们大概用了大概一个 quarter 不到后来发现实在扛不住,所以就就就没有再用我们那个那个 license。

所以、哪怕宁可花了三个工程师去探讨怎么去把 Caravel 和 Superset 用起来,觉得这个呃、in the long run 是更 cost efficient。OK, sounds no more question.