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
任何人都可以請解釋我可能做錯了什麼? 我非常感謝你的幫助。