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



我正在尝试将字符串转换为整数在我的PySpark代码。

input = 1670900472389,其中1670900472389为字符串

我正在执行这个操作,但是它返回null。

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

我读了关于Stack Overflow的帖子。它们的输入字符串中有引号或逗号导致这种情况。然而,我的输入字符串不是这样的。知道发生了什么吗?

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)

最新更新