首页 > 解决方案 > pyspark如何检查给定的spark数据框是否已使用inferSchema = True创建

问题描述

我正在开发一个 API,其中一个函数应该接收一个 spark 数据帧,并使用 spark 数据帧中的模式来执行操作。

由于无法保证用户将创建数据框并将推断架构设置为 True,因此我的函数将接收到没有推断架构的数据框,因此如果发生这种情况,我想抛出一个错误。

我可以检查是否使用 inferSchema=True 创建了数据框?或者是否有一个 pyspark 函数可以在创建数据框后推断模式?

由于 inferSchema=False 所有列都是 StringType,我不能基于此拒绝数据帧,因为这是某些数据帧的可能模式。

标签: pysparkapache-spark-sql

解决方案


不,这不是它的工作原理。Spark 数据框总是有一个模式,无论模式是来自“推断”还是通过定义。“怀疑”数据框的唯一方法inferSchema=False是——就像你说的——所有列都是StringType. 所以这里的一个选项是你的 API 可以抛出警告而不是错误,如果你看到所有列都是字符串


推荐阅读