文档首页/
    
      
      MapReduce服务 MRS/
      
      
        
        
        组件操作指南(阿布扎比区域)/
        
        
        使用Spark2x/
        
        
        Spark2x常见问题/
        
        
        SQL和DataFrame/
        
      
      16T的文本数据转成4T Parquet数据失败
    
  
  
    
        更新时间:2022-02-22 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-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  | 
     
       所有涉及网络连接操作的超时时间。单位:秒。  | 
     
       360s  | 
    
   父主题: SQL和DataFrame