使用dataframe.schema与dataframe.printschema()比较pyspark模式

zkure5ic  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(555)

我在尝试比较两个pysparkDataframe的模式时遇到了一个问题。
如果我使用 df1.schema == df2.schema 它有时会回来 True 但有时会回来 False (我确信模式是匹配的)
但是,当我使用 df1.printSchema() == df2.printSchema() ,输出总是 True .
我知道df.schema的数据类型是pyspark.sql.types.structtype,但是为什么它有时会给出错误的比较结果呢?是Pypark里的虫子吗?

63lcw9qa

63lcw9qa1#

如果您正在使用 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]))

相关问题