我正在编写一个验证功能,该功能应检查以下内容:Dataset<Row> ds
具有列col1
和col2
。它也可能包含其他列。
验证col1
和col2
中是否没有缺少的值(NaN,NULL,null等)。
该代码应为Java代码。这是我到目前为止的
private static boolean isSleepDataValid(SparkSession spark, Dataset<Row> ds) {
ds.createOrReplaceTempView("validityData");
if (spark.sql("SELECT col1 FROM validityData WHERE col1 IS NULL").count() > 0) {
return false;
}
if (spark.sql("SELECT col2 FROM validityData WHERE col2 IS NULL").count() > 0) {
return false;
}
return true;
}
但是,这很丑陋,我正在寻找一种更好,更清洁的方法。我想避免签名中的
SparkSession spark
和函数主体中的SQL。 最佳答案
要使用Spark DSL,类似
return ds
.filter(ds.col("col1").isNull().or(ds.col("col2").isNull()))
.limit(1)
.count() == 0;
请注意,当找到空值时,
limit 1
可能会提高效率。