我对sparksql还不熟悉。我在语言手册中搜索了hive/sparksql并在google上搜索了答案,但没有找到明显的答案。
在mysql中,我们可以表示十六进制文本 0xffff
这样地:
mysql>select 0+0xffff;
+----------+
| 0+0xffff |
+----------+
| 65535 |
+----------+
1 row in set (0.00 sec)
但是在sparksql(我使用的是beeline客户机)中,我只能执行以下操作:数值用十进制表示,而不是十六进制。
> select 0+65535;
+--------------+--+
| (0 + 65535) |
+--------------+--+
| 65535 |
+--------------+--+
1 row selected (0.047 seconds)
如果改为执行以下操作,则会出现错误:
> select 0+0xffff;
Error: org.apache.spark.sql.AnalysisException:
cannot resolve '`0xffff`' given input columns: []; line 1 pos 9;
'Project [unresolvedalias((0 + '0xffff), None)]
+- OneRowRelation$ (state=,code=0)
如何在sparksql中表示十六进制文本?
1条答案
按热度按时间mqkwyuun1#
不幸的是,你不能在sparksql中这么做。
您可以通过查看antlr语法文件来发现它。在那里,那个
number
通过定义的规则DIGIT
lexer规则如下所示:它不包含任何十六进制字符,因此不能使用它们。