Dataframe 这种动态框架连接行为是故意的吗?还是一只虫子?
动态框架的连接行为与我预期的不同。我们为join方法提供了两列列表,如果第一列中的列与第二列中的列的任何排列相匹配,则认为这是相等的。下面是一个示例,演示PiSkad数据文件连接给出了我所期望的,而动态框架连接似乎考虑列值的排列是匹配的。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
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|
+---+---+---+---+
我没想到上面最后一个表中的第二行会被包括在内。动态框架连接的这种行为是故意的吗