GitHub標星2.6K!Jupyter“慌了”!Netflix發佈新開發工具Polynote

近日,Netflix宣佈開源Polynote,Polynote是Netflix自家使用的多語言筆記本環境,Polynote爲數據科學家和機器學習研究人員提供了一個筆記本環境,允許他們將基於JVM的ML平臺(此類平臺大多使用Scala構建)與Python生態系統中流行的機器學習和可視化庫無縫集成。

它已經在Netflix內部廣泛使用,而且Netflix正在研究如何將Polynote和其他平臺集成,下面一起詳細來看看Polynote有哪些牛掰的功能特性:

功能概述

可重複性

Polynote的兩個指導原則是可複製性和可見性。爲了實現這兩大特性,我們最早的設計決策之一是從頭開始構建Polynote的代碼解釋,而不是像傳統筆記本一樣依賴REPL。

我們認爲,儘管REPL總體上不錯,但它們根本不適合筆記本電腦。爲了瞭解REPL和筆記本的問題,讓我們看一下典型筆記本環境的設計。

筆記本是單元格的有序集合,每個單元格可以保存代碼或文本。每個單元格的內容可以獨立修改和執行。單元格可以重新排列,插入和刪除。這還可以取決於筆記本電腦中其他單元的輸出。

將此與REPL環境進行對比會發現。在REPL會話中,用戶把表達式一次一個地輸入提示符。一旦求值,表達式及其求值結果是不可變的,求值結果將附加到下一個表達式可用的全局狀態。

不幸的是,這兩個模型之間的脫節意味着一個典型的notebook環境,它使用一個REPL會話來評估單元代碼,當用戶與notebook交互時,會導致隱藏狀態積累。單元可以按任何順序執行,從而改變這種全局隱藏狀態,從而影響其他單元的執行。通常情況下,筆記本無法從頂部可靠地重新運行,這使得它們很難複製並與他人共享。這種隱藏狀態也讓用戶很難推斷筆記本上運行了什麼。

在其他筆記本中,隱藏狀態意味着一個變量在其單元格被刪除後仍然可用。

在 Polynote 筆記本中,沒有隱藏狀態,被刪除的單元格變量不再可用。

從頭編寫Polynote的代碼解釋允許我們消除這種全局的、可變的狀態。通過跟蹤每個單元中定義的變量,Polynote根據在其上運行的單元構建給定單元的輸入狀態。使單元格的位置在其執行語義中變得重要,這也加強了最小驚奇原則,允許用戶從上到下閱讀筆記本。它通過讓筆記本持續運行,從而確保其可重複性。

編輯改進

Polynote提供了諸如交互式自動完成和參數提示、錯誤高亮顯示以及支持LaTeX富文本編輯器等類似ide的特性。

可見性

Polynote UI通過顯示內核狀態、突出顯示當前正在運行的單元代碼和當前正在執行的任務,從而讓用戶對內核狀態的直觀瞭解。

多語言

筆記本中的每個單元格都可以用不同的語言編寫,變量可以在它們之間共享。目前支持Scala、Python和SQL語言類型。

依賴項和配置管理

Polynote 將配置和依賴項信息直接存入筆記本,而不依賴於外部文件或集羣 / 服務器級別的配置。

數據可視化

本機數據探索和可視化幫助用戶瞭解更多關於他們的數據,而不會弄亂他們的筆記本。與matplotlib和Vega的集成允許高級用戶通過漂亮的可視化效果進行交互。

接下來,我們將更深入地瞭解Polynote的功能:

安裝

安裝過程是按照它的指南文檔進行的,我還安裝了matplotlib

pip3 install matplotlib 

如果你打算嘗試它的多語言功能,則需要再添加一個環境變量:

export PYSPARK_ALLOW_INSECURE_GATEWAY=1 

如果沒有,你就會收到以下提示:

編輯體驗

使用筆記本級別的“配置和依賴項”設置可以輕鬆地從maven存儲庫中提取依賴項,包括使用HTTP get從Netflix博客獲取文本的請求:

自動完成功能適用於從Maven存儲庫中提取的庫:

但是,lambda函數的自動完成功能似乎不起作用:

Spark示例

在這個字數統計示例中,我們從HTTP獲取文本,對其進行標記,並保留所有大於4個字符的標記。

Spark也可以輕鬆配置“配置和依賴”設置:

切換到Python

現在,我們切換到python,使用panda和matplotlib來繪製條形圖,只選取前10個單詞。

運行還算順利,但是有時候會彈出以下警告:

當這種情況發生時,接口停止工作,惟一的解決方法就是終止Polynote進程並重啓。

Polynote是迄今爲止我嘗試過的Spark和Scala最好的筆記本。雖然有些小故障,但是我相信很快就會修復

目前,Polynote已經在GitHub上標星2.6K,177個Fork(GitHub地址:https://github.com/polynote/polynote)如果對這個項目感興趣,可以直接訪問GitHub的源代碼進行嘗試。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章