в блокноте pyspark в AWS JupyterHub, панды не отображают график - PullRequest
0 голосов
/ 24 сентября 2018

Я работаю с Jupyter Hub, установленным в Docker, в кластере AWS.В этом Jupyter Hub есть ядра python, pyspark, pyspark3, и я создаю новый ноутбук с ядром pyspark.Это означает, что Jupyter создает сеанс Livy из док-контейнера наружу, в кластер, где установлена ​​искра.Кроме того, Python2.7 установлен вне докера.Итак, если в моей записной книжке pyspark я начинаю свою ячейку с

%matplotlib inline
import matplotlib as mpl
import matplotlib.pyplot as plt
x = np.linspace(0, 10, 100)
plt.plot(x, x, label='linear')

, я получаю простой график, все в порядке.То же самое, если я создаю простых панд df, я могу построить все правильно.Означает ли это, что в этой ячейке я работаю с локальным (установленным в докерской версии python) питоном, без явного запуска ячейки с волшебным словом %% local?Или эта ячейка работает с внешним питоном, установленным вне контейнера докера?Я в замешательстве ...

В следующей ячейке я делаю часть pyspark:

from pyspark import SparkContext, SparkConf
from pyspark import SQLContext
from pyspark.sql.functions import *

Я вижу, что сеанс spark создается только после того, как я выполню эту ячейку.Поэтому я создаю rdd, затем запускаю фрейм данных, затем конвертирую его в фрейм данных pandas и пытаюсь построить гистограмму:

pandas_dfa.hist(bins=10)

, но вместо графика я вижу это:

array([[<matplotlib.axes._subplots.AxesSubplot object at 0x7fc23d6e89d0>]],      dtype=object)

Я могуне понимаю почему?В предыдущей ячейке все шло хорошо.

Если я снова напишу в этой же ячейке

%matplotlib inline
import matplotlib.pyplot as plt
pandas_dfa.hist(bins=10)

Я получаю ошибку: NameError: имя 'pandas_dfa' не определено

...