Netflix 開源 Polynote:對(duì)標(biāo) Jupyter,一個(gè)筆記本運(yùn)行多種語言
使用類似 Jupyter Notebook 進(jìn)行數(shù)據(jù)分析和機(jī)器學(xué)習(xí)是近來較為方便靈活的開發(fā)方式,但是 Jupyter Notebook 缺乏對(duì)多種語言的原生支持,在管理筆記本內(nèi)的依賴、數(shù)據(jù)可視化等方面有所欠缺。近日,NetFlix 公司將其數(shù)據(jù)分析和機(jī)器學(xué)習(xí)開發(fā)工具 Polynote 開源。這一工具支持多語言在一個(gè)筆記本程序內(nèi)運(yùn)行,還增加了很多新特性,值得讀者朋友嘗試使用。
談到數(shù)據(jù)科學(xué)領(lǐng)域的開發(fā)工具,Jupyter 無疑是非常知名的一種。它具有靈活高效的特點(diǎn),非常適合進(jìn)行開發(fā)、調(diào)試、分享和教學(xué)。近日,Netflix(奈飛)居然也玩起了跨界,他們開源了一個(gè)名為 Polynote 的程序。類似于 Jupyter,Polynote 可以進(jìn)行開發(fā)工作,但是能夠支持包括 Python 在內(nèi)的多種編程語言。
據(jù)奈飛在 Medium 的文章中介紹,Polynote 開發(fā)的目的是為了給數(shù)據(jù)科學(xué)家和機(jī)器學(xué)習(xí)研究者提供一個(gè)筆記本環(huán)境,使他們能夠自由且無縫地和奈飛本身基于 JVM 的機(jī)器學(xué)習(xí)平臺(tái)結(jié)合。這一平臺(tái)很大程度上使用的是 Scala 語言,還有一些基于 Python 的機(jī)器學(xué)習(xí)和可視化代碼庫。Polynote 之前已經(jīng)在奈飛內(nèi)部的團(tuán)隊(duì)中使用了,現(xiàn)在他們希望將其開源,以促進(jìn)相關(guān)研究的發(fā)展。
Polynote 的五大特性
據(jù)介紹,Polynote 有五個(gè)特性值得關(guān)注。
支持多語言
和 Jupyter Notebook 不同,Polynote 本身支持多種語言編程。除了對(duì) Scala 語言的一級(jí)支持,Polynote 還在一個(gè)筆記本內(nèi)支持多語言運(yùn)行,包括 Scala、Python、SQL 和 Vega,而且這些語言都具備自動(dòng)補(bǔ)全功能。
實(shí)現(xiàn)多語言支持的是 polyglot。它可以讓用戶在不同的塊中寫不同的代碼。另外,每個(gè)代碼塊都會(huì)接受符合輸入名的變量,并返回要求的變量給出下一段代碼,不管這些代碼是什么樣的語言。這樣可以讓用戶按照需要選擇某種語言中最合適的工具。
polyglot 支持多種語言一起運(yùn)行。
編輯功能增強(qiáng)
除了和 Jupyter Notebook 一樣可以在代碼編輯中插入文本編輯,Polynote 可以很容易地插入 LaTex 公式。
另外,文本編輯方面有常用的編輯功能。
運(yùn)行增強(qiáng)
在運(yùn)行的時(shí)候,運(yùn)行的代碼塊和代碼行會(huì)顯示出來,方便開發(fā)者查看運(yùn)行情況。
如圖所示,Polynote 在運(yùn)行時(shí)會(huì)顯示當(dāng)前運(yùn)行的代碼塊和代碼,以及完成某個(gè)任務(wù)需要的時(shí)間。
依賴和配置管理
Polynote 支持對(duì)筆記本的依賴和配置進(jìn)行管理,這樣可以避免很多運(yùn)行時(shí)的問題。
如上圖所示,polynote 的配置和依賴管理界面類似于 PyCharm 等高級(jí) IDE,可以自行改變各種依賴的版本和安裝方法。和 Jupyter Notebook 不同,這些配置是不需要外部文件或集群服務(wù)器進(jìn)行的。
數(shù)據(jù)可視化
Polynote 和兩個(gè)非常著名的數(shù)據(jù)可視化工具進(jìn)行了結(jié)合,它們分別是 Vega 和 Mataplotlib。Polynote 同時(shí)也對(duì)數(shù)據(jù)挖掘有著天然支持,這包括數(shù)據(jù)表視圖、表格檢查工具、圖表構(gòu)建工具,以及對(duì) Vega 的支持。
數(shù)據(jù)位置有一個(gè)按鈕,可以展示圖表。
通過工具構(gòu)建圖表。
此外,Polynote 還有一些有趣的小特性,如將代碼塊的位置記錄,使得代碼庫能夠按照順序運(yùn)行,以保證可復(fù)現(xiàn)性。
安裝方法
目前,Polynote 是一個(gè) notebook 程序,因此用戶可以在本地使用,或搭建網(wǎng)絡(luò)服務(wù)。
首先,用戶需要下載這一基于 JVM 的服務(wù)器應(yīng)用(用來提供網(wǎng)絡(luò)服務(wù)代理)。如果要在本地環(huán)境下使用,用戶可以從開源列表中找到最新版本并下載名為「polynote-dist.tar.gz」的文件(文件可以從 Assets 文件下找到)。
- tar -zxvpf polynote-dist.tar.gz
- cd polynote
下載后進(jìn)入目錄,然后進(jìn)行準(zhǔn)備。
準(zhǔn)備內(nèi)容目前有以下一些:
Polynote 只在 OSX 和 Linux 進(jìn)行了測(cè)試,用 Chrome 瀏覽器進(jìn)行代理,因此作者們希望用戶能夠及時(shí)反饋意見;
如果用戶需要 Spark 支持,則需要安裝 Apache Spark;
用戶需要使用 Python3,而不是 Python2。
還有一些其他的依賴,安裝代碼如下:
pip3 install jep jedi pyspark virtualenv
如果要進(jìn)行配置,用戶需要拷貝 config-template.yml 文件到 config.yml 文件中,并取消需要修改的配置上的注釋功能。
運(yùn)行時(shí),運(yùn)行以下文件(在下載的文件中):
- ./polynote.py
參考鏈接:https://medium.com/netflix-techblog/open-sourcing-polynote-an-ide-inspired-polyglot-notebook-7f929d3f447https://github.com/polynote/polynote官網(wǎng):https://polynote.org (https://polynote.org/)