Dataframe 这种动态框架连接行为是故意的吗?还是一只虫子?

Dataframe 这种动态框架连接行为是故意的吗?还是一只虫子?,dataframe,join,pyspark,aws-glue,Dataframe,Join,Pyspark,Aws Glue,动态框架的连接行为与我预期的不同。我们为join方法提供了两列列表,如果第一列中的列与第二列中的列的任何排列相匹配,则认为这是相等的。下面是一个示例,演示PiSkad数据文件连接给出了我所期望的,而动态框架连接似乎考虑列值的排列是匹配的。 from awsglue import DynamicFrame from pyspark import SparkContext from awsglue.context import GlueContext sc = SparkContext.getOr

动态框架的连接行为与我预期的不同。我们为join方法提供了两列列表,如果第一列中的列与第二列中的列的任何排列相匹配,则认为这是相等的。下面是一个示例,演示PiSkad数据文件连接给出了我所期望的,而动态框架连接似乎考虑列值的排列是匹配的。
from awsglue import DynamicFrame
from pyspark import SparkContext
from awsglue.context import GlueContext

sc = SparkContext.getOrCreate()
gc = GlueContext(sc)

col_names = ['a', 'b']
df1 = spark.createDataFrame([(1, 2), (2, 1)], col_names)
df2 = spark.createDataFrame([(1, 2)], col_names)

joined_df = df1.join(df2, col_names)
joined_df.show()

+---+---+
|  a|  b|
+---+---+
|  1|  2|
+---+---+

dyf1 = DynamicFrame.fromDF(df1, gc, 'dyf1')
dyf2 = DynamicFrame.fromDF(df2, gc, 'dyf2')

joined_dyf = dyf1.join(col_names, col_names, dyf2)
joined_dyf.show()

{"b": 2, ".b": 2, ".a": 1, "a": 1}
{"b": 2, ".b": 1, ".a": 2, "a": 1}

joined_dyf.toDF().show()  # convert to dataframe before the show for better visualization

+---+---+---+---+
|  b| .b|  a| .a|
+---+---+---+---+
|  2|  2|  1|  1|
|  2|  1|  1|  2|
+---+---+---+---+
我没想到上面最后一个表中的第二行会被包括在内。动态框架连接的这种行为是故意的吗