首页 > 解决方案 > 将 pyspark DataFrame 的列的类型从 BigInt 转换为 Int

问题描述

当我按照以下方式创建 pyspark DataFrame 时:

df = spark.sparkContext.parallelize([
      ('Client1', 'abc', 1),
      ('Client2', 'def', 2),
      ('Client3', 'ghi', 3)
   ]).toDF(['CLIENT_NO', 'CLIENT_FAMILY', 'CLT_INT'])

'CLT_INT' 列的类型为BigInt

关于如何将该列转换为不包含BigInt而是Int而不改变我创建 DataFrame 的方式的任何建议,即仍然使用parallelizetoDF

标签: pythondataframepysparkapache-spark-sql

解决方案


你可以试试这样的

>>> df2 = df.withColumn("CLT_INT", df["CLT_INT"].cast(IntegerType()))
>>> df2.printSchema()
root
 |-- CLIENT_NO: string (nullable = true)
 |-- CLIENT_FAMILY: string (nullable = true)
 |-- CLT_INT: integer (nullable = true)

推荐阅读