kryo序列化失败:缓冲区溢出

vfwfrxfs  于 2021-05-17  发布在  Spark
关注(0)|答案(0)|浏览(295)

我们通过scala中的spark读取s3中以小时格式显示的数据,

sparkSession
.createDataset(sc
 .wholeTextFiles(("s3://<Bucket>/<key>/<yyyy>/<MM>/<dd>/<hh>/*"))
.values
.flatMap(x=> {x
.replace("\n", "")
 .replace("}{", "}}{{")
 .split("\\}\\{")}))

执行上面的切片和骰子(比如replace和split)以json行的形式转换漂亮的json数据(每个json有一条json记录)。
现在在emr上运行时出现以下错误:
作业因阶段失败而中止:阶段11.0中的任务1失败了4次,最近的失败:阶段11.0中的任务1.3丢失(tid 43,ip-10-0-2-22.eu-west-1.compute.internal,executor 1):org.apache.spark.sparkexception:kryo序列化失败:缓冲区溢出。可用:0,必需:1148334。要避免这种情况,请增加spark.kryoserializer.buffer.max值。
我尝试过增加kyro序列化程序缓冲区的值 --conf spark.kryoserializer.buffer.max=2047m 但我仍然得到这个错误,读取数据的一些小时的位置,如09,10小时和其他时间,它是阅读罚款。
我想问一下如何删除这个错误,以及是否需要在spark配置中添加其他内容,比如更改分区数?谢谢

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题