下面是我在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.
乍一看,这似乎是数据中空值的直接问题。但下面是我观察到的其他细节。
此外:
1) 我在dev env中第一次使用beeline。在那之前,都是Hivecli。
2) 我们已经通过sqoop将一个表带到了hive中,由于我们想将文本格式转换为orc,所以我们创建了一个包含50个bucket的orc表,并且在insert的帮助下,我们将所有数据传输到新创建的orc hive表中。
3) 在我原来的配置单元表中有4列。我在查询任何列时都没有看到任何错误。但是,在我们将数据推送到orc配置单元表之后,现在当我查询这4个配置单元表中的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\u name中选择max(length(col\u name));
它是两个配置单元表中的字符串类型。
4) 我们还用演示数据创建了一个内部配置单元表,然后将该数据以直线方式推送到orc表中。
We are using Spark 2.1 server, and all our Hadoop components are on this server.
如有任何帮助/建议,我们将不胜感激。
暂无答案!
目前还没有任何答案,快来回答吧!