代码之家  ›  专栏  ›  技术社区  ›  skjagini

如果文件夹是空的,那么如何正确地读取一个包含Spark拼花文件的文件夹

  •  0
  • skjagini  · 技术社区  · 7 年前

    val hdfsData: DataFrame = spark.sqlContext.read.parquet(hdfsPath)
    hdfsData.rdd.isEmpty() match ....
    ....
    

    错误:org.apache.spark.sql.AnalysisException:无法推断拼花地板的架构。必须手动指定。;

    处理这种情况的正确方法是什么。

    0 回复  |  直到 7 年前
        1
  •  1
  •   Tony Broyez    6 年前

    有同样的问题,我用一个简单的尝试/成功/失败来处理

    val acc:DataFrame = session.createDataset(List("foo", "bar")).toDF()
    
    val tryDf:Try[DataFrame] =
          Try(
            session.read.parquet("s3://path-to-bucket/path-to-folder-with-no-parquet-files-under-it/")
          )
        val resultDf:DataFrame = tryDf match {
          case Success(df) => acc.union(df)
          case Failure(f) => {
            println(s"@@ handled ${ f }") // => @@ handled org.apache.spark.sql.AnalysisException: Unable to infer schema for Parquet. It must be specified manually.; 
            acc
          }
        }
    
        println(s"resultDf.count ${ resultDf.count }") // => 2```