如何在Spark Scala中转换为BIGINT类型



我将SHA1应用于一些数据,并将其转换为HASHYTE数据
我想将HASHBYTE数据转换为BIGINT数据
所以我试了如下。。。

val testDF = Seq("Ox532831f5e2effdcb4cf51e42f05e83f4b45679f3").toDF
testDF.withColumn("big_Int", col("value").cast("bigint")).show(false)
+------------------------------------------+-------+
|value                                     |big_Int|
+------------------------------------------+-------+
|Ox532831f5e2effdcb4cf51e42f05e83f4b45679f3|null   |
+------------------------------------------+-------+

但是,确认了一个空值
我在T-SQL中使用CAST检查了BIGINT。

select cast(0x532831F5E2EFFDCB4CF51E42F05E83F4B45679F3 as BIGINT)
Returns : -1126317769775220237

我最终想要的是…
它是在spark-scala中转换为类似于T-SQL的BIGINT
非常感谢您的帮助。

对于大整数,应使用LongType:

cabArticleGold.withColumn("CAB", 'CAB.cast(LongType))

cabArticleGold.withColumn("CAB", 'CAB.cast("long"))

您也可以使用DecimalType

cabArticleGold.withColumn("CAB", 'CAB.cast(DecimalType(38, 0)))

cabArticleGold.withColumn("CAB", 'CAB.cast("decimal(38, 0)"))

最新更新