[ 
https://issues.apache.org/jira/browse/SPARK-18917?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15795069#comment-15795069
 ] 

Steve Loughran commented on SPARK-18917:
----------------------------------------

looking at the code being optionally disabled, the underlying problem is that 
it's doing a recursive treewalk of the filesystem paths, which is a performance 
killer on object stores, which is issuing 3-4 HTTPS requests per directory.

HADOOP-13208 makes the recursive {{FileSystem.listFiles(path, recursive=true)}} 
call an {{O(leaf-files/5000)}}, irrespective of directory structure. This will 
be in Hadoop 2.8 and things derived from that code.

Moving {{PartitioningAwareFileIndex.bulkListLeafFiles()}} to using that method 
will deliver the speedup without having to add & test a new option.

> Dataframe - Time Out Issues / Taking long time in append mode on object stores
> ------------------------------------------------------------------------------
>
>                 Key: SPARK-18917
>                 URL: https://issues.apache.org/jira/browse/SPARK-18917
>             Project: Spark
>          Issue Type: Improvement
>          Components: EC2, SQL, YARN
>    Affects Versions: 2.0.2
>            Reporter: Anbu Cheeralan
>            Priority: Minor
>   Original Estimate: 72h
>  Remaining Estimate: 72h
>
> When using Dataframe write in append mode on object stores (S3 / Google 
> Storage), the writes are taking long time to write/ getting read time out. 
> This is because dataframe.write lists all leaf folders in the target 
> directory. If there are lot of subfolders due to partitions, this is taking 
> for ever.
> The code is In org.apache.spark.sql.execution.datasources.DataSource.write() 
> following code causes huge number of RPC calls when the file system is an 
> Object Store (S3, GS).
> if (mode == SaveMode.Append) {
> val existingPartitionColumns = Try {
> resolveRelation()
> .asInstanceOf[HadoopFsRelation]
> .location
> .partitionSpec()
> .partitionColumns
> .fieldNames
> .toSeq
> }.getOrElse(Seq.empty[String])
> There should be a flag to skip Partition Match Check in append mode. I can 
> work on the patch.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to