2017-07-17 50 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中得到修复。