簡體   English   中英

如何使 matplotlib 在 AWS EMR Jupyter 筆記本中工作?

[英]How do I make matplotlib work in AWS EMR Jupyter notebook?

這與這個問題非常接近,但我添加了一些針對我的問題的詳細信息:

使用 AWS-EMR jupyter notebook 進行 Matplotlib 繪圖

我想找到一種在我的 Jupyter 筆記本中使用 matplotlib 的方法。 這是錯誤的代碼片段,它相當簡單:

筆記本

import matplotlib
matplotlib.use("agg")
import matplotlib.pyplot as plt
plt.plot([1,2,3,4])
plt.show()

我選擇這個片段是因為當它嘗試使用 TKinter(未安裝在 AWS EMR 集群上)時,僅這一行就失敗了:

import matplotlib.pyplot as plt

當我運行完整的筆記本代碼段時,結果是沒有運行時錯誤,但也沒有任何反應(沒有顯示圖表。)我對一種可以工作的方式的理解是添加以下任一片段:

pyspark 魔術符號

%matplotlib inline

結果

unknown magic command 'matplotlib'
UnknownMagic: unknown magic command 'matplotlib'

IPython 顯式魔術調用

from IPython import get_ipython
get_ipython().run_line_magic('matplotlib', 'inline')

結果

'NoneType' object has no attribute 'run_line_magic'
Traceback (most recent call last):
AttributeError: 'NoneType' object has no attribute 'run_line_magic'

到我的筆記本,它調用一個 spark magic 命令,該命令內聯 matplotlib 圖(至少這是我的解釋。)我在使用引導操作后嘗試了這兩種方法:

EMR 引導程序

sudo pip install matplotlib
sudo pip install ipython

即使添加了這些,我仍然收到一個錯誤,即 matplotlib 沒有魔法。 所以我的問題肯定是:

如何使 matplotlib 在 AWS EMR Jupyter 筆記本中工作?

(或者如何在 AWS EMR Jupyter notebook 中查看圖形和繪制圖像?)

正如你所說,在EMR集群上沒有安裝matplotlib ,因此會出現這樣的錯誤:

錯誤

但是,它實際上在托管的 Jupyter 筆記本實例(docker 容器)中可用。 使用%%local魔法將允許您在本地運行單元格:

當地的

@00schneider 的答案確實有效。

import matplotlib.pyplot as plt

# plot data here
plt.show()

plt.show()

重新運行包含以下內容的魔法單元,您將在 AWS EMR Jupyter PySpark 筆記本上看到一個圖

%matplot plt

將 matplotlib 導入為

import matplotlib.pyplot as plt

並使用魔術命令%matplot plt代替,如此處的教程所示: https : %matplot plt emr-筆記本/

以下應該工作:

import matplotlib
%matplotlib inline
import matplotlib.pyplot as plt
plt.plot([1,2,3,4])

在一個單元格中運行整個腳本

要在 AWS EMR 筆記本中繪制某些內容,您只需使用%matplot plt 您可以在 AWS 的此頁面中間看到此文檔。

例如,如果我想快速繪制一個圖:

import matplotlib.pyplot as plt

plt.clf() #clears previous plot in EMR memory
plt.plot([1,2,3,4])
plt.show()

%matplot plt

試試下面的代碼。 僅供參考,我們在 emr-5.26.0 上的 Python3.6 中安裝了 matplotlib 3.1.1,我使用了 PySpark 內核。 確保“%matplotlib inline”是單元格中的第一行

%matplotlib inline

import matplotlib
import matplotlib.pyplot as plt
plt.plot([1,2,3,4])
plt.show()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM