You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python int()函数的Scala与Spark等价实现方法问询

Scala与Spark中类似Python int()的进制转换函数

Python里的int()函数支持指定基数将字符串转为任意精度整数,比如处理超长十六进制字符串:

int("443205090D01DFF9000000", 16)  # 输出: 82443166943838217193914368

但Scala的Integer.parseInt()会抛出NumberFormatException,原因是目标数值远超出了32位Int的范围:

Integer.parseInt("443205090D01DFF9000000", 16);
// 抛出异常: NumberFormatException: For input string: "443205090D01DFF9000000"

Scala中的等价实现

Scala里可以用BigInt类处理任意大整数的进制转换,它和Python 3的int()功能完全等价:

BigInt("443205090D01DFF9000000", 16)  // 结果: 82443166943838217193914368

如果数值在64位Long的范围内,也可以用java.lang.Long.parseLong(),但对于超出Long范围的大数值,BigInt是唯一可行的选择。

Spark中的实现方式

Spark SQL提供了conv函数用于进制转换,支持将任意进制的字符串转为十进制字符串(避免数值范围限制):

SELECT conv("443205090D01DFF9000000", 16, 10) AS decimal_num;
-- 输出字符串形式的结果: "82443166943838217193914368"

在Scala编写Spark DataFrame代码时,也可以结合conv和BigIntType直接转为大整数类型:

import org.apache.spark.sql.types.BigIntType
import org.apache.spark.sql.functions.expr

df.withColumn("decimal_num", expr("conv(hex_str, 16, 10)").cast(BigIntType))

内容的提问来源于stack exchange,提问作者Sandie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 14:52:17