Python 3.x 比较PySpark中的文件
我正在与PySpark合作,我需要比较两个文件的内容,以进行diffcheck。 因此,我将测试分为两部分:Python 3.x 比较PySpark中的文件,python-3.x,apache-spark,pyspark,user-defined-functions,difference,Python 3.x,Apache Spark,Pyspark,User Defined Functions,Difference,我正在与PySpark合作,我需要比较两个文件的内容,以进行diffcheck。 因此,我将测试分为两部分: 我在两个文件之间建立连接列,并检查记录是否相同 我从每个文件中获取唯一的列,并保存它们(以手动测试) 第一步是采取行动 joined_columns = set(tbl1.columns).intersection(set(tbl2.columns)) joined_columns_str = str(joined_columns)[1:-1].replace("'"
joined_columns = set(tbl1.columns).intersection(set(tbl2.columns))
joined_columns_str = str(joined_columns)[1:-1].replace("'", "")
tbl1_set = spark.sql("SELECT " + joined_columns_str + " FROM tbl1")
tbl2_set = spark.sql("SELECT " + joined_columns_str + " FROM tbl2")
sql = "SELECT * FROM tbl1_set " \
"EXCEPT " \
"SELECT * FROM tbl2_set "
different_records = spark.sql(sql)
但是,在这些文件中,我有映射列-因此我得到以下错误:
org.apache.spark.sql.AnalysisException: Cannot have map type columns in DataFrame which calls set operations(intersect, except, etc.)
有人知道如何解决这个问题,只得到不完全相同的记录吗?
我曾想过使用udf,但在“选择*”上找不到如何使用它,只有在引用特定字段时
任何帮助都将不胜感激
谢谢 你试过分解地图吗?您将有键/值列,您可以比较映射的每个元素。嗨@Steven,要这样做,我需要处理特定的列,不是吗。。。?如果一列是地图,我如何才能分解它?