PySpark合并两个DataFrame生成新DataFrame遇NoneType问题求助
问题解决:PySpark DataFrame赋值后为NoneType的问题
问题出在你最后一行的.show()方法上——PySpark的show()是仅用于打印输出DataFrame内容的动作方法,它的返回值是None,而非DataFrame对象。你把show()的结果赋值给new_df,自然会让new_df变成NoneType,后续调用fillna时就会报错。
修正方法很简单:将.show()从赋值语句中剥离,先完成DataFrame的关联和选择操作并赋值给new_df,之后再单独调用show()查看结果。
修正后的代码:
mappedhh = spark.sql("SELECT * FROM Notebooks_Lakehouse.properties_coordinates") temp_test = spark.sql("SELECT * FROM Notebooks_Lakehouse.vw_temp") # 先完成DataFrame的关联与选择,赋值给new_df new_df = temp_test.alias("a").join(mappedhh.alias("b"), ["Reference"], "left").select("a.Reference", "a.FullAddress", "b.AddressCoordinates") # 单独调用show()查看内容 new_df.show() # 现在可以正常调用fillna方法 new_df = new_df.fillna({"AddressCoordinates" : 0}) # 查看处理后的结果 new_df.show()
补充说明:PySpark中,show()、write()这类触发执行的动作(Action)方法,大多返回None;而join()、select()、fillna()这类转换(Transformation)方法,才会返回新的DataFrame对象。赋值时要注意区分,只把转换方法的结果赋值给变量。
内容的提问来源于stack exchange,提问作者MariaT
相关产品推荐
相关产品推荐

