【发布时间】:2018-09-21 02:23:54
【问题描述】:
如果我从 CSV 读取数据,默认情况下所有列都是“字符串”类型。通常,我使用以下函数检查数据,这些函数概述了数据及其类型
- df.dtypes
- df.show()
- df.printSchema()
- df.distinct().count()
- df.describe().show()
但是,如果存在我认为属于特定类型的列,例如双倍,如果我没有商业知识,我无法确定所有值是否都是双倍的,因为
1- 我看不到所有值(数百万个唯一值) 2-如果我明确地将它转换为双精度类型,火花会悄悄地转换类型而不抛出任何异常,并且非双精度值将转换为“null” - 例如
from pyspark.sql.types import DoubleType.
changedTypedf = df_original.withColumn('label', df_control_trip['id'].cast(DoubleType()))
那么确认列类型的最佳方法是什么?
【问题讨论】:
-
当reading from CSV你可以设置
inferSchema=True它会尝试找出每一列的类型,
标签: apache-spark pyspark type-conversion apache-spark-sql