Я использую Spark 1.6 с Python 2.7 и имею 2 простых кадра данных Pyspark-
>>> df.show()
+-----------+-------------------+
|cust_agt_id| source_id|
+-----------+-------------------+
| abcd| 1|
| abc| 1|
| bcd| 1|
+-----------+-------------------+
>>> cache.show()
+-----------+---------+-------+
|cust_agt_id|source_id|inCache|
+-----------+---------+-------+
| abcd1| 1| 1|
| abc| 1| 1|
| bcd1| 1| 1|
+-----------+---------+-------+
Я просто соединяю эти 2 кадра данных (левое соединение)
>>> joinColumns=['cust_agt_id','source_id']
>>> df.join(cache,joinColumns,"left").filter(isnull(cache['inCache'])).show()
+-----------+---------+-------+
|cust_agt_id|source_id|inCache|
+-----------+---------+-------+
+-----------+---------+-------+
>>> df.join(cache,joinColumns,"left").filter(col("inCache").isNull()).show()
+-----------+---------+-------+
|cust_agt_id|source_id|inCache|
+-----------+---------+-------+
| abcd| 1| null|
| bcd| 1| null|
+-----------+---------+-------+
Почему эти два нулевых условия проверки ведут себя по-разному. Я получаю правильный результат с помощью второго фильтра "(col (" inCache "). IsNull ())"
Спасибо
Sid