1
这是我从一个名为“test”的cassandra表读取的示例代码。我以几种不同的方式实现了这一点,然而,这应该是逻辑上相同的。实际上,Column.isNull()应该等于not(Column.isNotNull())。Column.isNull()vs not(Column.isNotNull())
// scenario 1
Dataset<Row> data = session.read().format("org.apache.spark.sql.cassandra").option("keyspace", "testkeyspace").option("table", "test").load();
Column expr = data.col("col1").isNull();
data = data.filter(expr);
List<Row> rows = data.collectAsList();
System.out.println("Number of rows when expression is 'isNull()': " + rows.size());
// scenario 2
data = session.read().format("org.apache.spark.sql.cassandra").option("keyspace", "testkeyspace").option("table", "test").load();
expr = not(data.col("col1").isNotNull());
data = data.filter(expr);
rows = data.collectAsList();
System.out.println("Number of rows when expression is 'not(isNotNull())': " + rows.size());
然而,我得到完全不同的结果:
的行数时表达为 'ISNULL()':336
的行数时表达为“不(isNotNull()) ':0
任何人都可以请解释我可能做错了什么? 我非常感谢你的帮助。