首页 > 解决方案 > 未签名的 Apache Spark SQL 类型

问题描述

我想知道Apache Spark SQL 中是否有无符号数字类型?

我在DataType 文档中没有看到任何内容,但是,我们知道文档可能是部分的。

最初我试图从 varchar 中转换一个很长的整数:

SELECT cast(myVeryLongIntAsString as UNSIGNED INTEGER)

但我得到了错误:

pyspark.sql.utils.ParseException:
     extraneous input 'INTEGER' expecting ')'

根据MySQL 类型文档,SQL 确实有一个UNSIGNED INTEGER.

标签: apache-sparkapache-spark-sqlcastingunsigned

解决方案


Spark SQL 不是一个完整的 SQL 引擎,而是一个提供主要 SQL 功能的引擎。

不,spark SQL 中没有无符号类型。我们可以直接查看 spark 源代码中所有定义的数据类型: https ://github.com/apache/spark/tree/master/sql/catalyst/src/main/scala/org/apache/spark/sql/types

对不起 :\

现在,真的有必要吗?我认为,无符号 SQL 类型主要用于减少内存大小。但在 spark 中,可以使用多种存储格式。使用有符号或无符号并不会真正产生影响(与选择二进制与字符串或列与行存储相比)


推荐阅读