文档首页/
MapReduce服务 MRS/
组件操作指南(LTS版)/
使用Spark/Spark2x/
Spark常见问题/
SQL和DataFrame/
16T的文本数据转成4T Parquet数据失败
更新时间:2025-06-10 GMT+08:00
16T的文本数据转成4T Parquet数据失败
问题
使用默认配置时,16T的文本数据转成4T Parquet数据失败,报如下错误信息。
Job aborted due to stage failure: Task 2866 in stage 11.0 failed 4 times, most recent failure: Lost task 2866.6 in stage 11.0 (TID 54863, linux-161, 2): java.io.IOException: Failed to connect to /10.16.1.11:23124 at org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:214) at org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:167) at org.apache.spark.network.netty.NettyBlockTransferService$$anon$1.createAndStart(NettyBlockTransferService.scala:92)
使用的默认配置如表1所示。
回答
由于当前数据量较大,有16T,而分区数只有200,造成每个task任务过重,才会出现上面的问题。
为了解决上面问题,需要对参数进行调整。
- 增大partition数,把任务切分的更小。
- 增大任务执行过程中的超时时间。
在客户端的“{客户端安装目录}/Spark/spark/conf/spark-defaults.conf”配置文件中配置如下参数。
参数 |
描述 |
---|---|
spark.sql.shuffle.partitions |
shuffle操作时,shuffle数据的分块数,建议修改为4501。 |
spark.shuffle.sasl.timeout |
shuffle操作时SASL认证的超时时间,建议修改为2000s。 |
spark.shuffle.io.connectionTimeout |
shuffle操作时连接远程节点的超时时间,建议修改为3000s。 |
spark.network.timeout |
所有涉及网络连接操作的超时时间,建议修改为3600s。 |
父主题: SQL和DataFrame