
# 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]所示。
 表1参数说明 
| 参数                                 | 描述                          | 默认值  |
|:---|:---|:---|
| spark.sql.shuffle.partitions       | shuffle操作时，shuffle数据的分块数。   | 200  |
| spark.shuffle.sasl.timeout         | shuffle操作时SASL认证的超时时间。单位：秒。 | 120s |
| spark.shuffle.io.connectionTimeout | shuffle操作时连接远程节点的超时时间。单位：秒。 | 120s |
| spark.network.timeout              | 所有涉及网络连接操作的超时时间。单位：秒。       | 360s |
   
#### 回答
由于当前数据量较大，有16T，而分区数只有200，造成每个task任务过重，才会出现上面的问题。
为了解决上面问题，需要对参数进行调整。
- 增大partition数，把任务切分的更小。
- 增大任务执行过程中的超时时间。
 
在客户端的"spark-defaults.conf"配置文件中配置如下参数。
表2参数说明 
| 参数                                 | 描述                          | 建议值   |
|:---|:---|:---|
| spark.sql.shuffle.partitions       | shuffle操作时，shuffle数据的分块数。   | 4501  |
| spark.shuffle.sasl.timeout         | shuffle操作时SASL认证的超时时间。单位：秒。 | 2000s |
| spark.shuffle.io.connectionTimeout | shuffle操作时连接远程节点的超时时间。单位：秒。 | 3000s |
| spark.network.timeout              | 所有涉及网络连接操作的超时时间。单位：秒。       | 360s  |
   
