spark读取空目录

lf5gs5x2  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(429)

试图读取空的Parquet目录,出现此错误
无法指定Parquet地板的架构。必须手动指定
我的代码

val myObject = spark.read.parquet(path).as[MyClass].filter(p => ......)

尝试处理scala'try'和定期检查空目录

myObject.rdd.isEmpty

有什么想法吗

lf3rwulv

lf3rwulv1#

你可以这样试试

var myObject: DataFrame = null
try {
   myObject = spark.read.parquet(path).as[MyClass].filter(p => ......)
catch {
  case ae: AnalysisException =>
    //Do your logic here
}

在这个场景中,“myobject.rdd.isempty”不起作用,因为它需要加载目录并推断模式,然后检查是否为空。
要让它工作,你可以这样做:

val customSchema = StructType(Array(
  StructField("id", IntegerType, true),
  StructField("name", StringType, true),
  StructField("email", StringType, true))
)

val myObject = spark.read.schema(customSchema).parquet(path).as[MyClass].filter(p => ......)

if(myObject.rdd.isEmpty) {
   //Do something
}
else {
  //Do something else
}

相关问题