【问题标题】:How to convert to BIGINT type in Spark Scala如何在 Spark Scala 中转换为 BIGINT 类型
【发布时间】:2022-01-20 04:19:27
【问题描述】:

我将 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。
非常感谢您的帮助。

【问题讨论】:

    标签: scala apache-spark


    【解决方案1】:

    对于大整数,你应该使用 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)"))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-03
      • 1970-01-01
      • 2019-12-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多