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

How to convert to BIGINT type in Spark Scala

我对一些数据应用了 SHA1,并将其变成了 HASHBYTE 数据。
我想将 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)"))