在PySpark中将字符串转换为整数返回null

s4n0splo  于 2022-12-13  发布在  Apache
关注(0)|答案(1)|浏览(242)

我试图在我的PySpark代码中将字符串转换为整数。
输入= 1670900472389,其中1670900472389是字符串
我正在执行此操作,但它返回null。

df = df.withColumn("lastupdatedtime_new",col("lastupdatedtime").cast(IntegerType()))

我读过关于堆栈溢出的帖子。他们在输入字符串中有引号或逗号导致了这个。但是我的输入字符串不是这样的。你知道发生了什么吗?

dly7yett

dly7yett1#

Java整数可以保存的最大值是2147483647,即32位或231-1
请改用LongType:

import pyspark.sql.functions as F
from pyspark.sql.types import LongType

df = spark.createDataFrame(data=[["1670900472389"]], schema=["lastupdatedtime"])

df = df.withColumn("lastupdatedtime_new", F.col("lastupdatedtime").cast(LongType()))

输出:

+---------------+-------------------+
|lastupdatedtime|lastupdatedtime_new|
+---------------+-------------------+
|1670900472389  |1670900472389      |
+---------------+-------------------+

结构描述:

root
 |-- lastupdatedtime: string (nullable = true)
 |-- lastupdatedtime_new: long (nullable = true)

相关问题