从一个位置读取多个镶木地板时如何忽略空镶木地板文件

use*_*484 5 file bigdata dataframe apache-spark parquet

我正在尝试将镶木地板文件读取到数据框,就像这样

val df = sqlContext.read.parquet("<location>/*.parquet")
Run Code Online (Sandbox Code Playgroud)

但是,在目录下,可能存在空的 parquet 文件(大小为 0 字节)。有没有一种有效的方法可以忽略读取空文件?

小智 1

已经很久了,但问题还没有得到解答:)

如果您的位置有更多文件,并且至少有一个文件 > 0 字节,您可以合并架构。

pyspark 中的示例:

下面的代码:

df = spark.read.format("parquet").load(location)
Run Code Online (Sandbox Code Playgroud)

将会失败

df = spark.read.format("parquet").load(location)
Run Code Online (Sandbox Code Playgroud)

如果您至少有一个 0 字节文件,则会出现错误。然而,

df = spark.read.format("parquet").option("mergeSchema", "true").load(location)
Run Code Online (Sandbox Code Playgroud)

如果您至少有一个文件 > 0 字节,则成功。