2017-07-17 21 views
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

任何人都可以請解釋我可能做錯了什麼? 我非常感謝你的幫助。

回答

0

我的不好。這個問題確實存在於2.1.0(我正在使用)中,但它在2.1.1中得到修復。