Netflix開源Polynote:對標Jupyter,一個筆記本運行多種語言

機器之心報道

參與:一鳴

使用類似 Jupyter Notebook 進行數據分析和機器學習是近來較為方便靈活的開發方式,但是 Jupyter Notebook 缺乏對多種語言的原生支持,在管理筆記本內的依賴、數據可視化等方面有所欠缺。近日,NetFlix 公司將其數據分析和機器學習開發工具 Polynote 開源。這一工具支持多語言在一個筆記本程序內運行,還增加了很多新特性,值得讀者朋友嘗試使用。

談到數據科學領域的開發工具,Jupyter 無疑是非常知名的一種。它具有靈活高效的特點,非常適合進行開發、調試、分享和教學。近日,Netflix(奈飛)居然也玩起了跨界,他們開源了一個名為 Polynote 的程序。類似於 Jupyter,Polynote 可以進行開發工作,但是能夠支持包括 Python 在內的多種編程語言。

據奈飛在 Medium 的文章中介紹,Polynote 開發的目的是為了給數據科學家和機器學習研究者提供一個筆記本環境,使他們能夠自由且無縫地和奈飛本身基於 JVM 的機器學習平臺結合。這一平臺很大程度上使用的是 Scala 語言,還有一些基於 Python 的機器學習和可視化代碼庫。Polynote 之前已經在奈飛內部的團隊中使用了,現在他們希望將其開源,以促進相關研究的發展。

Polynote 的五大特性

據介紹,Polynote 有五個特性值得關注。

支持多語言

和 Jupyter Notebook 不同,Polynote 本身支持多種語言編程。除了對 Scala 語言的一級支持,Polynote 還在一個筆記本內支持多語言運行,包括 Scala、Python、SQL 和 Vega,而且這些語言都具備自動補全功能。

實現多語言支持的是 polyglot。它可以讓用戶在不同的塊中寫不同的代碼。另外,每個代碼塊都會接受符合輸入名的變量,並返回要求的變量給出下一段代碼,不管這些代碼是什麼樣的語言。這樣可以讓用戶按照需要選擇某種語言中最合適的工具。

Netflix開源Polynote:對標Jupyter,一個筆記本運行多種語言

‍polyglot 支持多種語言一起運行。

除了和 Jupyter Notebook 一樣可以在代碼編輯中插入文本編輯,Polynote 可以很容易地插入 LaTex 公式。

Netflix開源Polynote:對標Jupyter,一個筆記本運行多種語言

另外,文本編輯方面有常用的編輯功能。

Netflix開源Polynote:對標Jupyter,一個筆記本運行多種語言

運行增強

在運行的時候,運行的代碼塊和代碼行會顯示出來,方便開發者查看運行情況。

Netflix開源Polynote:對標Jupyter,一個筆記本運行多種語言

如圖所示,Polynote 在運行時會顯示當前運行的代碼塊和代碼,以及完成某個任務需要的時間。

依賴和配置管理

Polynote 支持對筆記本的依賴和配置進行管理,這樣可以避免很多運行時的問題。

Netflix開源Polynote:對標Jupyter,一個筆記本運行多種語言

如上圖所示,polynote 的配置和依賴管理界面類似於 PyCharm 等高級 IDE,可以自行改變各種依賴的版本和安裝方法。和 Jupyter Notebook 不同,這些配置是不需要外部文件或集群服務器進行的。

數據可視化

Polynote 和兩個非常著名的數據可視化工具進行了結合,它們分別是 Vega 和 Mataplotlib。Polynote 同時也對數據挖掘有著天然支持,這包括數據表視圖、表格檢查工具、圖表構建工具,以及對 Vega 的支持。

Netflix開源Polynote:對標Jupyter,一個筆記本運行多種語言

數據位置有一個按鈕,可以展示圖表。

Netflix開源Polynote:對標Jupyter,一個筆記本運行多種語言

通過工具構建圖表。

此外,Polynote 還有一些有趣的小特性,如將代碼塊的位置記錄,使得代碼庫能夠按照順序運行,以保證可復現性。

安裝方法

目前,Polynote 是一個 notebook 程序,因此用戶可以在本地使用,或搭建網絡服務。

首先,用戶需要下載這一基於 JVM 的服務器應用(用來提供網絡服務代理)。如果要在本地環境下使用,用戶可以從開源列表中找到最新版本並下載名為「polynote-dist.tar.gz」的文件(文件可以從 Assets 文件下找到)。


下載後進入目錄,然後進行準備。

準備內容目前有以下一些:

  • Polynote 只在 OSX 和 Linux 進行了測試,用 Chrome 瀏覽器進行代理,因此作者們希望用戶能夠及時反饋意見;
  • 如果用戶需要 Spark 支持,則需要安裝 Apache Spark;
  • 用戶需要使用 Python3,而不是 Python2。

還有一些其他的依賴,安裝代碼如下:


如果要進行配置,用戶需要拷貝 config-template.yml 文件到 config.yml 文件中,並取消需要修改的配置上的註釋功能。

運行時,運行以下文件(在下載的文件中):


參考鏈接:https://medium.com/netflix-techblog/open-sourcing-polynote-an-ide-inspired-polyglot-notebook-7f929d3f447https://github.com/polynote/polynote

官網:https://polynote.org (https://polynote.org/)


分享到:


相關文章: