apache-spark - Pyspark 最可靠的验证列类型的方法
问题描述
如果我从 CSV 读取数据,默认情况下所有列都是“字符串”类型。通常,我使用以下函数检查数据,这些函数概述了数据及其类型
- df.dtypes
- df.show()
- df.printSchema()
- df.distinct().count()
- df.describe().show()
但是,如果有一个我认为是特定类型的列,例如 Double,如果我没有业务知识,我无法确定所有值是否都是双倍的,因为
1- 我看不到所有值(数百万个唯一值) 2- 如果我将其显式转换为 double 类型,spark 会悄悄地转换类型而不抛出任何异常,并且非 double 的值将转换为“null” - 例如
from pyspark.sql.types import DoubleType.
changedTypedf = df_original.withColumn('label', df_control_trip['id'].cast(DoubleType()))
那么确认列类型的最佳方法是什么?
解决方案
在 Scala Dataframe 中有字段“模式”,猜想,在 Python 中是一样的:
df.schema.fields.find( _.name=="label").get.dataType
推荐阅读
- python - Django Rest Framework 隐藏 JSON 数据
- azure - 在没有 ContentLength 的情况下将文件放入 Azure Blob
- vba - 在 VBA for Word 中更改子组内形状的颜色
- javascript - 在不退出全屏窗口的情况下将所有内容重置为初始状态?
- haskell - 如何测试 Scotty 端点
- c# - SQL:从表条目中获取开始日期时间和结束日期时间之间的持续时间
- docker - gRPC 未实现/未知服务
- node.js - ReactJS SSR 导航到主页
- python - 如何在 django 中有效地对模型 obj 进行排名
- ruby-on-rails - 通过 hashid 查询 ActiveRecord