我正在使用spark-2.0.0。当我试图从相同的源交叉两个数据帧时,答案不是预期的。它与内连接相同。
df = sqlContext.read.parquet("path to hdfs file").select('col1','col2')
w1 = df.filter(df.col1 == 1)
w2 = df.filter(df.col2 == 2)
w1.select('col1').intersect(w2.select('col1')).show()
#Answer is just w1
w2.select('col1').intersect(w1.select('col1')).show()
#Answer is just w2
w1.intersect(w2).show()
#This should give empty data frame but output is w1
w1.join(w2,w1.col1==w2.col2)
#this is giving out put as if w1.join(w1,'col1)
仅当我通过hdfs阅读时才会发生此行为。如果我在程序中构建一个数据帧,它就会按预期运行。
我也尝试使用别名,如此链接中给出的暂时解决问题仍无效。 http://search-hadoop.com/m/q3RTtOaknEYeLLi&subj=Re+Join+on+DataFrames+from+the+same+source+Pyspark+