【问题标题】:Pyspark schema: how to check nullability?Pyspark 模式:如何检查可空性?
【发布时间】:2021-11-07 18:12:02
【问题描述】:

我正在尝试比较两个 pyspark 模式。但是,我希望能够查看哪些列不完全匹配。因此,我不想使用简单的schema1 == schema2。但是,我看不到一种方法来比较字段的可空性。这可能吗?

def assert_schemas_equal(schema1, schema2):
  mismatches_counter = 0
  for field1, field2 in zip(schema1, schema2):
    if field1.name != field2.name or field1.dataType != field2.dataType:
      print('Mismatch!', field1, field2)
      mismatches_counter += 1
  if mismatches_counter>0:
    return False
  else:
    return True

【问题讨论】:

    标签: python apache-spark pyspark


    【解决方案1】:

    您可以使用nullable 属性。

    def assert_schemas_equal(schema1, schema2):
      mismatches_counter = 0
      for field1, field2 in zip(schema1, schema2):
        if field1.name != field2.name or field1.dataType != field2.dataType or field1.nullable != field2.nullable:
          print('Mismatch!', field1, field2)
          mismatches_counter += 1
      if mismatches_counter>0:
        return False
      else:
        return True
    

    让我知道这是否适合你。

    【讨论】:

    • @Grevioos 这对你有用吗?
    【解决方案2】:

    我相信这个会做的工作

    set(df1.schema).symmetric_difference(set(df2.schema))
    

    【讨论】:

      猜你喜欢
      • 2021-11-12
      • 2011-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-30
      • 1970-01-01
      • 2011-03-10
      • 1970-01-01
      相关资源
      最近更新 更多