Spark-Scala Невозможно определить схему (отложить проверку входного пути в DataSource) - PullRequest
0 голосов
/ 11 ноября 2018

SPARK-26039

При загрузке пустой папки orc. В любом случае, чтобы обойти это.

val df = spark.read.format("orc").load(orcFolderPath)

org.apache.spark.sql.AnalysisException: Unable to infer schema for ORC. It must be specified manually.;
  at org.apache.spark.sql.execution.datasources.DataSource$$anonfun$7.apply(DataSource.scala:185)
  at org.apache.spark.sql.execution.datasources.DataSource$$anonfun$7.apply(DataSource.scala:185)
  at scala.Option.getOrElse(Option.scala:121)
  at org.apache.spark.sql.execution.datasources.DataSource.getOrInferFileFormatSchema(DataSource.scala:184)
  at org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:373)
  at org.apache.spark.sql.DataFrameReader.loadV1Source(DataFrameReader.scala:223)
  at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:211)
  at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:178)
  ... 49 elided

Получив эту ошибку, orc reader пытается вывести схему, но я хочу обойти этот особый случай, когда каким-то образом в репозитории появляется пустая папка, но ее нужно проверить.

try {
    spark.read.format("orc").load(path)
    } catch {
        case ex: org.apache.spark.sql.AnalysisException => {
        null
            }
    }

Пытался таким способом отловить исключение. Любой другой способ будет полезен

1 Ответ

0 голосов
/ 14 ноября 2018

есть еще одно решение, похоже ... это тоже не самое лучшее ...

import org.apache.hadoop.conf.Configuration
import org.apache.hadoop.fs.{FileSystem, Path}

  def pathStatus(path: String): Boolean = {
      val config: Configuration = new Configuration()
      val fs: FileSystem = FileSystem.get(config)
    if (fs.globStatus(new Path(path)) == null) {
      false
    } else {
      true
    }
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...