Github user zhzhan commented on a diff in the pull request:
https://github.com/apache/spark/pull/7200#discussion_r33831074
--- Diff:
sql/hive/src/main/scala/org/apache/spark/sql/hive/orc/OrcFileOperator.scala ---
@@ -24,30 +24,58 @@ import
org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector
import org.apache.spark.Logging
import org.apache.spark.deploy.SparkHadoopUtil
+import org.apache.spark.sql.AnalysisException
import org.apache.spark.sql.hive.HiveMetastoreTypes
import org.apache.spark.sql.types.StructType
-private[orc] object OrcFileOperator extends Logging{
- def getFileReader(pathStr: String, config: Option[Configuration] = None
): Reader = {
+private[orc] object OrcFileOperator extends Logging {
+ // TODO Needs to consider all files when schema evolution is taken into
account.
+ def getFileReader(basePath: String, config: Option[Configuration] =
None): Option[Reader] = {
+ def isWithNonEmptySchema(path: Path, reader: Reader): Boolean = {
+ reader.getObjectInspector match {
+ case oi: StructObjectInspector if oi.getAllStructFieldRefs.size()
> 0 =>
+ true
+ case oi: StructObjectInspector if oi.getAllStructFieldRefs.size()
== 0 =>
+ logInfo(
+ s"ORC file $path has empty schema, it probably contains no
rows. " +
+ "Trying to read another ORC file to figure out the schema.")
+ false
+ case _ => false
--- End diff --
In what situation, will the third case happen? If not exist, can we
collapse the 2nd and 3rd case?
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]