我有一个数据框,其中包含我使用collect_set创建的列。它的类型是:
t.StructField("list_of_stuff", t.ArrayType(t.StringType(), False), True)
我想创建一个测试,通过与使用相同模式从json文件加载的数据帧进行比较,来验证数据帧。 尽管文件中的所有行在该字段中均包含有效的数组值,但是加载的数据框将获得具有以下类型的架构(其他列相同):
t.StructField("list_of_stuff", t.ArrayType(t.StringType(), True), True)
因此,当我尝试使用assert_frame_equal进行比较时,我收到一个错误,即列不相同。
这里有2个问题:
答案 0 :(得分:1)
我设法处理了#2:
converter = udf(lambda x: x, t.ArrayType(t.StringType(), False))
df = df.withColumn("list_of_stuff", converter("list_of_stuff"))