APP下载

Netflix开源多语言开发笔记本Polynote

消息来源:baojiabao.com 作者: 发布时间:2024-11-01

报价宝综合消息Netflix开源多语言开发笔记本Polynote

Netflix现在对外开源,自家个人化与推荐团队所使用的多语言笔记本环境Polynote,Polynote良好支援Scala,并且与Apache Spark整合,也提供了Scala、Python和SQL等语言的互操作性,以及自动程式码完成等功能。

Polynote可为资料科学家或是机器学习研究人员,提供一个紧密整合JVM机器学习平台的笔记本环境,在主要Scala的开发工作中,同时使用Python的机器学习与视觉化函式库。

Polynote的出现,源自于Netflix对于笔记本开发环境的需求,Netflix提到,现在的笔记本工具缺乏对Scala的支援,虽然Python开发人员,习惯使用较少相依项目的套件管理器,但是Scala开发人员通常需要使用能够管理数百相依项目冲突的建置工具。另外,Netflix也希望在使用Spark时,开发人员可以在丛集运算环境中,无论使用任何一个节点,可以确保分散式程式码,皆能在一致的环境中执行。

而且Netflix开发人员也认为,使用笔记本编辑程式码的体验很糟,尤其是与IntelliJ IDEA以及Eclipse工具比较之后,Netflix提到,笔记本的执行是程式码的特定片段,在特定时间点于特定环境中执行的一笔纪录,这个纪录文件包含了程式码、资料和执行结果,这样的方式让笔记本功能强大,却也很难再次重现执行过程。

另外,Netflix在机器学习领域,有多语言的需求,因为机器学习开发工作,通常需要使用多种开发语言,像是研究人员可能使用Scala和Spark产生训练资料,并以Python机器学习函式库诸如Tensorflow或是scikit-learn进行实际训练,支援多语言开发,可让开发人员不用在各种工具间切换。

Netflix受IDE启发,并且根据自身需求开发了Polynote笔记本,Netflix重新设计Polynote对程式码解释,不像传统笔记本仰赖REPL(Read-Eval-Print Loop)模型。Netflix提到,由于笔记本的程式码输入以储存格(Cell)为单位,每个储存格可重新排列、插入和删除,而储存格内容可以独立修改和执行,当以REPL模型评估储存格,则可能产生隐藏的状态,由于储存格可以用任何顺序执行,因此可能影响其他储存格的执行,但是Polynote在执行时,会把储存格的位置列入考量,以消除传统笔记本难以从头开始执行的不良作法。

Polynote还可提供许多IDE的功能,像是互动式自动完成以及参数提示,也能显示内联错误提示,而且其文字编辑器还支援LaTeX。 Polynote中的UI会显示核心状态,并突出显示正在执行的储存格程式码,还有正在执行的任务,供开发者了解核心现况。

特别的是,Polynote支援多语言互通,每个储存格都可以编写不同的开发语言,而且之间还能够共享变数,目前支援Scala、Python和SQL。Polynote会储存配置和相依性的设定,并为Spark开发人员解决一些常见的相依性问题。

在资料视觉化方面,Polynote整合了两个热门的开源视觉化函式库Vega和Matplotlib,Matplotlib在笔记本工具中是很标准的工具,而Polynote则又同时原生支援了资料探索功能,包括资料架构检视、表格查看工具以及Vega函式库。

2019-10-27 01:51:00

相关文章