首页 > 解决方案 > Pyspark 最可靠的验证列类型的方法

问题描述

如果我从 CSV 读取数据,默认情况下所有列都是“字符串”类型。通常,我使用以下函数检查数据,这些函数概述了数据及其类型

但是,如果有一个我认为是特定类型的列,例如 Double,如果我没有业务知识,我无法确定所有值是否都是双倍的,因为

1- 我看不到所有值(数百万个唯一值) 2- 如果我将其显式转换为 double 类型,spark 会悄悄地转换类型而不抛出任何异常,并且非 double 的值将转换为“null” - 例如

from pyspark.sql.types import DoubleType.

changedTypedf = df_original.withColumn('label', df_control_trip['id'].cast(DoubleType()))

那么确认列类型的最佳方法是什么?

标签: apache-sparkpysparktype-conversionapache-spark-sql

解决方案


在 Scala Dataframe 中有字段“模式”,猜想,在 Python 中是一样的:

df.schema.fields.find( _.name=="label").get.dataType

推荐阅读