Java 检查列是否包含缺少的值
我正在编写一个验证函数,它应该检查:Java 检查列是否包含缺少的值,java,apache-spark,Java,Apache Spark,我正在编写一个验证函数,它应该检查: 数据集ds具有列col1和col2。它还可能包含其他列 验证col1和col2中是否没有缺失值(NaN、NULL、NULL等) 代码应该是Java代码。这是我到目前为止所拥有的 private静态布尔值isSleepDataValid(SparkSession spark,数据集ds){ ds.createOrReplaceTempView(“validityData”); if(spark.sql(“从validityData中选择col1,其中col1为
数据集ds
具有列col1
和col2
。它还可能包含其他列col1
和col2
中是否没有缺失值(NaN、NULL、NULL等)private静态布尔值isSleepDataValid(SparkSession spark,数据集ds){
ds.createOrReplaceTempView(“validityData”);
if(spark.sql(“从validityData中选择col1,其中col1为NULL”).count()>0){
返回false;
}
if(spark.sql(“从validityData中选择col2,其中col2为NULL”).count()>0){
返回false;
}
返回true;
}
然而,这是丑陋的,我正在寻找一个更好和更干净的方式。我希望避免签名中使用SparkSession spark,函数体中使用SQL
return ds
.filter(ds.col("col1").isNull().or(ds.col("col2").isNull()))
.limit(1)
.count() == 0;
请注意,当发现空值时,
限制1
可能会提高效率。使用Spark DSL,例如
return ds
.filter(ds.col("col1").isNull().or(ds.col("col2").isNull()))
.limit(1)
.count() == 0;
请注意,当发现空值时,限制1
可能会提高效率。如何
private static boolean isSleepDataValid(SparkSession spark, Dataset<Row> ds) {
return (ds.count() == ds.na().drop().count())
}
private静态布尔值isSleepDataValid(SparkSession spark,数据集ds){
返回(ds.count()==ds.na().drop().count())
}
ds.count()
返回总行数。
df.na().drop()
将删除包含null值的行。如果没有空值,行数将相等,方法将返回true,否则返回false 怎么样
private static boolean isSleepDataValid(SparkSession spark, Dataset<Row> ds) {
return (ds.count() == ds.na().drop().count())
}
private静态布尔值isSleepDataValid(SparkSession spark,数据集ds){
返回(ds.count()==ds.na().drop().count())
}
ds.count()
返回总行数。
df.na().drop()
将删除包含null值的行。如果没有空值,行数将相等,方法将返回true,否则返回false 也许这有帮助(尽管在python中):也许这有帮助(尽管在python中):