如何解决使用dataframe.schema与dataframe.printSchema比较pyspark模式
尝试比较两个pyspark数据框的架构时遇到了一个问题。
如果我使用df1.schema == df2.schema
,它有时会返回True
,但有时会返回False
(我确定架构是匹配的)
但是,当我使用df1.printSchema() == df2.printSchema()
时,输出始终为True
。
我知道df.schema的数据类型是 pyspark.sql.types.StructType ,但是为什么有时会给出 WRONG 比较结果?是pyspark中的错误吗?
解决方法
如果您使用的是pyspark
获取每个数据帧的dtypes
,该数据帧将返回List[(column_name,data_type)]
并像这样比较:
for idx1,el1 in enumerate(df1.dtypes):
for idx2,el2 in enumerate(df2.dtypes):
if idx1 == idx2:
if el1[0] == el2[0] and el1[1] == el2[1]:
continue
else:
raise ValueError("Schema Don't Match for Col {0} and {1}".format(el1[0],el2[0]))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。