You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spark.apache.org by rx...@apache.org on 2016/05/20 21:50:03 UTC
spark git commit: [SPARK-15454][SQL] Filter out files starting with _
Repository: spark
Updated Branches:
refs/heads/master 0e70fd61b -> dcac8e6f4
[SPARK-15454][SQL] Filter out files starting with _
## What changes were proposed in this pull request?
Many other systems (e.g. Impala) uses _xxx as staging, and Spark should not be reading those files.
## How was this patch tested?
Added a unit test case.
Author: Reynold Xin <rx...@databricks.com>
Closes #13227 from rxin/SPARK-15454.
Project: http://git-wip-us.apache.org/repos/asf/spark/repo
Commit: http://git-wip-us.apache.org/repos/asf/spark/commit/dcac8e6f
Tree: http://git-wip-us.apache.org/repos/asf/spark/tree/dcac8e6f
Diff: http://git-wip-us.apache.org/repos/asf/spark/diff/dcac8e6f
Branch: refs/heads/master
Commit: dcac8e6f49918a809fb3f2b8bf666582c479a6eb
Parents: 0e70fd6
Author: Reynold Xin <rx...@databricks.com>
Authored: Fri May 20 14:49:54 2016 -0700
Committer: Reynold Xin <rx...@databricks.com>
Committed: Fri May 20 14:49:54 2016 -0700
----------------------------------------------------------------------
.../sql/execution/datasources/fileSourceInterfaces.scala | 10 +++++-----
.../execution/datasources/HadoopFsRelationSuite.scala | 11 +++++++++++
2 files changed, 16 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/spark/blob/dcac8e6f/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/fileSourceInterfaces.scala
----------------------------------------------------------------------
diff --git a/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/fileSourceInterfaces.scala b/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/fileSourceInterfaces.scala
index 88125a2..e0e569b 100644
--- a/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/fileSourceInterfaces.scala
+++ b/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/fileSourceInterfaces.scala
@@ -341,11 +341,11 @@ private[sql] object HadoopFsRelation extends Logging {
/** Checks if we should filter out this path name. */
def shouldFilterOut(pathName: String): Boolean = {
- // TODO: We should try to filter out all files/dirs starting with "." or "_".
- // The only reason that we are not doing it now is that Parquet needs to find those
- // metadata files from leaf files returned by this methods. We should refactor
- // this logic to not mix metadata files with data files.
- pathName == "_SUCCESS" || pathName == "_temporary" || pathName.startsWith(".")
+ // We filter everything that starts with _ and ., except _common_metadata and _metadata
+ // because Parquet needs to find those metadata files from leaf files returned by this method.
+ // We should refactor this logic to not mix metadata files with data files.
+ (pathName.startsWith("_") || pathName.startsWith(".")) &&
+ !pathName.startsWith("_common_metadata") && !pathName.startsWith("_metadata")
}
/**
http://git-wip-us.apache.org/repos/asf/spark/blob/dcac8e6f/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/HadoopFsRelationSuite.scala
----------------------------------------------------------------------
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/HadoopFsRelationSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/HadoopFsRelationSuite.scala
index 89d5765..3c68dc8 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/HadoopFsRelationSuite.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/HadoopFsRelationSuite.scala
@@ -39,4 +39,15 @@ class HadoopFsRelationSuite extends QueryTest with SharedSQLContext {
assert(df.queryExecution.logical.statistics.sizeInBytes === BigInt(totalSize))
}
}
+
+ test("file filtering") {
+ assert(!HadoopFsRelation.shouldFilterOut("abcd"))
+ assert(HadoopFsRelation.shouldFilterOut(".ab"))
+ assert(HadoopFsRelation.shouldFilterOut("_cd"))
+
+ assert(!HadoopFsRelation.shouldFilterOut("_metadata"))
+ assert(!HadoopFsRelation.shouldFilterOut("_common_metadata"))
+ assert(HadoopFsRelation.shouldFilterOut("_ab_metadata"))
+ assert(HadoopFsRelation.shouldFilterOut("_cd_common_metadata"))
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@spark.apache.org
For additional commands, e-mail: commits-help@spark.apache.org