2017-05-24 14 views
0

私はSpark SQLを初めて使用しています。私はlanguage manual for Hive/SparkSQLを検索し、その答えを求めて調べましたが、明らかな答えが見つかりませんでした。 MySQLではSpark SQLで16進リテラルを表現する方法は?

我々はこのような0xffffリテラル進表現することができます(私はビーラインクライアントを使用しています)

mysql>select 0+0xffff; 
+----------+ 
| 0+0xffff | 
+----------+ 
| 65535 | 
+----------+ 
1 row in set (0.00 sec) 

しかし、スパークSQLでの、私だけ数値が小数で表現されている場合、次の操作を行うことができ16進ではありません。

> 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) 

がどのように我々はスパークSQLでリテラル進を表現していますか?

答えて

1

不幸にも、Spark SQLでは実行できません。

あなたはANTLR grammar fileを見るだけでそれを見つけることができます。このようになりますDIGITレクサー・ルールによって定義があり、numberルール:

number 
    : MINUS? DECIMAL_VALUE   #decimalLiteral 
    | MINUS? INTEGER_VALUE   #integerLiteral 
    | MINUS? BIGINT_LITERAL   #bigIntLiteral 
    | MINUS? SMALLINT_LITERAL   #smallIntLiteral 
    | MINUS? TINYINT_LITERAL   #tinyIntLiteral 
    | MINUS? DOUBLE_LITERAL   #doubleLiteral 
    | MINUS? BIGDECIMAL_LITERAL  #bigDecimalLiteral 
    ; 

... 

INTEGER_VALUE 
    : DIGIT+ 
    ; 

... 

fragment DIGIT 
    : [0-9] 
    ; 

あなたがそれらを使用することはできませんので、それは、任意の16進文字が含まれていません。

関連する問題