繁体   English   中英

在 PySpark 中“加入”操作后无法对结果数据帧执行操作

[英]Not able to perform operations on resulting dataframe after "join" operation in PySpark

df=spark.read.csv('data.csv',header=True,inferSchema=True)
rule_df=spark.read.csv('job_rules.csv',header=True)
query_df=spark.read.csv('rules.csv',header=True)

join_df=rule_df.join(query_df,rule_df.Rule==query_df.Rule,"inner").drop(rule_df.Rule).show()
print(join_df.collect().columns)

在这里,我创建了三个数据框:df、rule_df 和 query_df。 我已经对 rule_df 和 query_df 执行了内部连接,并将结果数据帧存储在 join_df 中。 但是,当我尝试简单地打印 join_df 数据框的列时,出现以下错误-

AttributeError: 'NoneType' object has no attribute 'columns' 

结果数据帧的行为不一样,我无法对其执行任何数据帧操作。

我猜当您尝试调用一个不存在的对象时会发生此错误,但这里不应该是这种情况,因为我可以查看生成的 join_df。

我是否需要执行不同的联接以避免此错误? 可能是一个愚蠢的错误,但我很难弄清楚它是什么。 请帮忙!

你犯了几个错误。

首先,您尝试将.show()的返回值分配给返回Nonejoin_df

然后调用.collect()函数,该函数返回一个包含此 RDD 中所有元素的列表。 您需要直接在DataFrame .columns

这应该有效:

join_df = rule_df.join(query_df,rule_df.Rule==query_df.Rule,"inner").drop(rule_df.Rule)
print(join_df.columns)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM