我们通过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配置中添加其他内容,比如更改分区数?谢谢
暂无答案!
目前还没有任何答案,快来回答吧!