在pyspark中,我们尝试合并两个数据帧。 我们正在将一个数据框架与另一个框架连接在一起(它本身是由join生成的)
result3 = result2.join(df3, df3.mktg_id == result2."max(acct_mkt_id)").select('result2.trans_dt', 'result2.channel','result2.loc_id','result2.meta_reason','max(acct_mkt_id)', 'max(campaign_name)').groupBy('result2.trans_dt', 'result2.channel','result2.loc_id','result2.meta_reason','max(acct_mkt_id)', 'max(campaign_name)').agg(sum("result2.bskt_sum"))
错误消息
SyntaxError: invalid syntax
但是,我收到语法错误。 现在result2.schema确实具有max(acct_mkt_id)字段,但是如果我尝试不带引号
result3 = result2.join(df3, df3.mktg_id == result2.max(acct_mkt_id)).select('result2.trans_dt', 'result2.channel','result2.loc_id','result2.meta_reason','max(acct_mkt_id)', 'max(campaign_name)').groupBy('result2.trans_dt', 'result2.channel','result2.loc_id','result2.meta_reason','max(acct_mkt_id)', 'max(campaign_name)').agg(sum("result2.bskt_sum"))
错误消息-
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/hdp/2.5.3.0-37/spark/python/pyspark/sql/dataframe.py", line 842, in __getattr__
"'%s' object has no attribute '%s'" % (self.__class__.__name__, name))
AttributeError: 'DataFrame' object has no attribute 'max'
能否让我知道,我缺少什么或者如何绕过此错误。
答案 0 :(得分:0)
在以下情况下,请使用col
来引用该列:
import org.apache.spark.sql.functions.col
result2.col("max(acct_mkt_id)")
在PySpark中,您可以通过以下方式简单地引用该列:
result2["max(acct_mkt_id)"]