PYSpark-Jupyter - 由于内核空间问题,无法运行特定任务

时间:2018-01-15 23:49:35

标签: python-2.7 pyspark jupyter

您好我是一名初学者,希望能够开展一个项目,展示运行分类模型的pyspark的强大功能。我根据Michael Galarnyk在中型网站上的帖子使用说明 - 它显示了如何从Windows命令提示符启动JUPYTER笔记本并打开内核并创建SparkContext。然后我跟着https://github.com/jadianes/spark-py-notebooks的教程。我能够运行第一个笔记本和大多数第二个笔记本(nb2-rdd-basics)。但是,当我尝试在下面运行单元格时,我收到一条错误消息

t0 = time()
head_rows = csv_data.take(100000)
tt = time() - t0
print "Parse completed in {} seconds".format(round(tt,3))

如果我将参数更改为低于100000的数字,例如1000,它可以工作,有时它可以工作100000.我不理解Juptyer中的错误消息但是在命令提示符后面我得到的信息让我相信它是一个错误信息。

我上网试图找到一个解决方案,而我所能找到的只是在命令提示符下输入pyspark而不是输入Jupyter我应该键入类似pyspark --driver-memory 10g --executor-memory 10g 。任何帮助将非常感激。请参阅以下从命令提示符

中提取的内容

引起:io.netty.util.internal.OutOfDirectMemoryError:无法分配655 36字节的直接内存(使用:67052544,最大:67108864)

此外,我尝试粘贴命令提示响应的全部内容,但无法弄清楚如何通过stackoverflow避免将其误解为代码,因此无法发布问题。

1 个答案:

答案 0 :(得分:0)

我认为我可以关闭这个问题,因为我想出了如何在Jupyter中添加额外的内存。在命令行输入pyspark打开Jupyter笔记本后,我进入笔记本的第一个单元格

sc = SparkContext(conf=SparkConf().set('spark.driver.memory', '10g')).getOrCreate()

然而,当我在jupyter中运行以下内容时,这并不能解决问题

t0 = time()
head_rows = csv_data.take(100000)
tt = time() - t0
print "Parse completed in {} seconds".format(round(tt,3))

我仍然收到错误消息(在Windows命令提示符下)

io.netty.util.internal.OutOfDirectMemoryError: failed to allocate 65536 
byte(s) of direct memory (used: 67059712, max: 67108864)

很失望,加入10克无济于事。但是,由于这是一个单独的问题,我将提出另一个问题