以下是我在Beeline中触发SQl查询时收到的错误消息。
The expression evaluated to NULL, but a Boolean result is required. Modify the error row disposition on the output to treat this result as False (Ignore Failure) or to redirect this row to the error output (Redirect Row). The expression results must be Boolean for a Conditional Split. A NULL expression result is an error.
乍一看,这似乎是数据中NULL值的直接问题。但下面是我观察的其他细节。
此外:
1)我在开发环境中第一次使用BEELINE。在此之前,它都是HIVE CLI。
2)我们通过SQOOP为HIVE带来了一个表格,因为我们想将文本格式转换为ORC,所以我们创建了一个包含50个桶的ORC表,并在INSERT的帮助下将所有数据传输到新的创建了ORC HIVE表。
3)我原来的HIVE表中有4列。查询任何列时,我都没有看到任何错误。但是,在我们将数据推送到ORC HIVE表之后,现在当我查询4个HIVE表中的3个时,我没有看到任何错误。但是当我查询这个有问题的列时,只有我得到了错误。下面是SQL查询
select col_name from tbl_name limit 4;
The output of the sql query on this particular table from the original HIVE table has below value
col_id is NULL
我们也认识到这个特定列的一些值有365个字符。以下是对该
的查询从tbl_name;
中选择max(length(col_name))这两个HIVE表都是字符串类型。
4)我们还创建了一个包含演示数据的内部HIVE表,然后将该数据推送到BEELINE中的ORC表。在这种情况下,当我们查询ORC表时,我们没有遇到问题。
We are using Spark 2.1 server, and all our Hadoop components are on this server.
任何帮助/建议都将受到高度赞赏。