为了账号安全,请及时绑定邮箱和手机立即绑定

使用 .toPandas() 函数时如何修复 Py4JJavaError?

使用 .toPandas() 函数时如何修复 Py4JJavaError?

眼眸繁星 2022-05-11 14:42:59
我是 pyspark 的新手,我正在尝试使用 word_tokenize() 函数。这是我的代码:import nltkfrom nltk import word_tokenizeimport pandas as pddf_pd = df2.select("*").toPandas()df2.select('text').apply(word_tokenize)df_pd.show()我使用 JDK 1.8、Python 3.7、spark 2.4.3。你能告诉我我做错了什么吗?如何解决?该部分下面的代码运行良好,没有任何错误。我收到这样的消息:Py4JJavaError: An error occurred while calling o106.collectToPython.: org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 14.0 failed 1 times, most recent failure: Lost task 0.0 in stage 14.0 (TID 330, localhost, executor driver): java.lang.OutOfMemoryError: Java heap space    at java.util.Arrays.copyOf(Arrays.java:3236)    at java.io.ByteArrayOutputStream.grow(ByteArrayOutputStream.java:118)    at java.io.ByteArrayOutputStream.ensureCapacity(ByteArrayOutputStream.java:93)    at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:153)    at org.apache.spark.util.ByteBufferOutputStream.write(ByteBufferOutputStream.scala:41)    at java.io.ObjectOutputStream$BlockDataOutputStream.write(ObjectOutputStream.java:1853)    at java.io.ObjectOutputStream.write(ObjectOutputStream.java:709)    at org.apache.spark.util.Utils$.writeByteBuffer(Utils.scala:260)    at org.apache.spark.scheduler.DirectTaskResult$$anonfun$writeExternal$1.apply$mcV$sp(TaskResult.scala:50)    at org.apache.spark.scheduler.DirectTaskResult$$anonfun$writeExternal$1.apply(TaskResult.scala:48)    at org.apache.spark.scheduler.DirectTaskResult$$anonfun$writeExternal$1.apply(TaskResult.scala:48)    at org.apache.spark.util.Utils$.tryOrIOException(Utils.scala:1326)    at org.apache.spark.scheduler.DirectTaskResult.writeExternal(TaskResult.scala:48)    at java.io.ObjectOutputStream.writeExternalData(ObjectOutputStream.java:1459)    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1430)    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348) and more....
查看完整描述

1 回答

?
噜噜哒

TA贡献1784条经验 获得超7个赞

toPandas 针对较小的数据集进行了优化。正如建议的那样,这可能是由于内存不足,您收到了错误。

尝试限制您的数据集大小: df_pd = df2.limit(10).select("*").toPandas()

应用您的函数,然后运行 .head(10) 以消除内存错误的问题。


查看完整回答
反对 回复 2022-05-11
  • 1 回答
  • 0 关注
  • 552 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号