You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@spark.apache.org by "Steve Loughran (JIRA)" <ji...@apache.org> on 2017/01/03 13:31:58 UTC

[jira] [Commented] (SPARK-18917) Dataframe - Time Out Issues / Taking long time in append mode on object stores

    [ 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: issues-unsubscribe@spark.apache.org
For additional commands, e-mail: issues-help@spark.apache.org