Spark链式调用中,如何引用spark.table创建的DataFrame字段?
Spark链式调用中关联字段的引用方法
有两种常用方法可以完成链式调用里的字段关联:
直接使用
F.col()引用字段
链式调用里,join操作紧跟在where之后,当前操作的DataFrame就是过滤后的tab1数据,直接用F.col("uid")就能引用原表的uid字段。完整代码如下:df1 = (spark.table('tab1') .where(F.col("yyyy") == year) .join(df_old, F.col("uid") == df_old.fid, "inner") )给DataFrame设置别名后引用
如果存在字段名冲突风险(比如多表关联时出现同名字段),可以给前面的DataFrame设置别名,通过别名明确指定字段来源,提升代码可读性:df1 = (spark.table('tab1') .where(F.col("yyyy") == year) .alias("t1") .join(df_old, F.col("t1.uid") == df_old.fid, "inner") )
两种方法都能实现需求,第一种简洁直接,适合单表过滤后关联的场景;第二种在复杂多表关联场景下更清晰,能避免字段歧义。
内容的提问来源于stack exchange,提问作者Blue Clouds
相关产品推荐
相关产品推荐

