当前位置: 首页 > 知识库问答 >
问题:

如果文件夹为空,如何正确读取据称包含来自Spark的Parket文件的文件夹

红鸿运
2023-03-14

当我试图读取一个文件夹时,它应该包含拼花格式的文件,如果有数据,一切都会工作,如果没有数据,我在第一行得到错误,后续代码不会执行

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

错误:组织。阿帕奇。火花sql。AnalysisException:无法推断拼花地板的架构。必须手动指定。;

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

共有1个答案

曾洲
2023-03-14

遇到同样的问题,我通过简单的尝试/成功/失败来解决

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```
 类似资料:
  • Python版本:2.7.13 操作系统:Windows 因此,我正在编写一个脚本,根据文件名中包含文件夹名的要求,将各种名称的文件复制到特定文件夹中。(我对这一点相当陌生,只是想在工作中创建更高效的脚本——我查看了大量StackOverflow页面和web上的一些地方,但找不到与此特定任务相关的Python) 我已经将文件夹转换为一个字符串列表,我可以搜索文件名,但是当我将它们复制到上面时,它们

  • 问题内容: 我有一个名为“数据”的文件夹。此文件夹有一个名为“收件箱”的子文件夹,其中有多个“ .txt”文件。可以修改“数据”文件夹,最后会有多个带有“收件箱”子文件夹和“ .txt”文件的子文件夹。我需要监视“收件箱”文件夹中的“数据”文件夹和“ .txt”文件。我怎样才能做到这一点? INotify只是监视文件夹,并在创建子文件夹时弹出事件。创建“ .txt”文件(在哪个文件夹中)时,如何弹

  • 如何从资源文件夹的子文件夹中读取文件。 我在资源文件夹中有一些json文件,例如: 现在我想在我的课堂上读到这个 这是我正在尝试的,但是失败了。 不起作用,那么我正在尝试: 这两样东西都不工作。

  • 我正在读取一个文件夹在adls在azure数据库,其中包含镶木地板文件的子文件夹。 path-base\u文件夹/文件名/ filename有一些子文件夹,如2020、2021,这些文件夹也有月份和日期的子文件夹。 所以实际拼花文件的路径类似于-base\u folder/filename/2020/12/01/part11111。拼花地板 我也尝试了下面的胎面命令,但它显示了同样的错误。无法推断

  • 问题内容: 我正在尝试压缩包含子文件夹的文件夹。尝试压缩名为10-18-2010_4D的文件夹。以上程序以以下异常结束。请提供有关如何解决此问题的建议。 问题答案: 您需要检查文件是否为目录,因为您无法将目录传递给zip方法。 看一下该页面,该页面显示了如何递归压缩给定目录。

  • 问题内容: 我想使用Java创建和删除目录,但是它不起作用。 问题答案: Java无法删除其中包含数据的文件夹。您必须先删除所有文件,然后再删除文件夹。 使用类似: 然后,您应该可以使用 Untested 删除文件夹!