Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 配置单元在不处于状态时自动筛选空值_Apache Spark_Hive - Fatal编程技术网

Apache spark 配置单元在不处于状态时自动筛选空值

Apache spark 配置单元在不处于状态时自动筛选空值,apache-spark,hive,Apache Spark,Hive,我在AWS中有一个名为table1的配置单元表,只有一列,如下所示: COL1 (null) active 正在尝试下面的查询 选择* 来自表1 其中COL1不在('反向') 蜂巢只返回一行 COL1 active 为什么它不返回带有(null)的记录 我理解修复方法是修改以下条件。但是我想调试这个问题,这样其他查询就不会发生这种情况 where coalesce(COL1,"") NOT IN ('reversed') 这就是所有RDBMS系统处理null值的方式 null有一个特殊的

我在AWS中有一个名为
table1
的配置单元表,只有一列,如下所示:

COL1
(null)
active
正在尝试下面的查询

选择*
来自表1
其中COL1不在('反向')
蜂巢只返回一行

COL1
active
为什么它不返回带有(null)的记录

我理解修复方法是修改以下条件。但是我想调试这个问题,这样其他查询就不会发生这种情况

where coalesce(COL1,"") NOT IN ('reversed')

这就是所有RDBMS系统处理
null
值的方式

null
有一个特殊的含义-类似于
未定义

检查时:

COL1 NOT IN ('reversed')
将进行以下比较:

(null) != reversed
active != reversed
...
并且只有返回
true
的才会被返回:

scala> spark.sql("SELECT 'active' != 'reversed'").show
+-------------------------+
|(NOT (active = reversed))|
+-------------------------+
|                     true|
+-------------------------+


scala> spark.sql("SELECT null != 'reversed'").show
+---------------------------------------+
|(NOT (CAST(NULL AS STRING) = reversed))|
+---------------------------------------+
|                                   null|
+---------------------------------------+
如您所见:
(null)!='反转的“
不会返回
true
——这就是为什么在结果集中看不到它的原因

此外:

scala> spark.sql("SELECT (null) = 'reversed'").show
+---------------------------------+
|(CAST(NULL AS STRING) = reversed)|
+---------------------------------+
|                             null|
+---------------------------------+

因为我们有
为空
非空
合并
等方法和函数,允许我们使用

感谢您的澄清!这有帮助。