如何在 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)"))
我对一些数据应用了 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.
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)"))