在 PySpark 的 JOIN 中创建列并用作连接键
Create column and use as join key inside of JOIN in PySpark
我想创建一个列用作连接内部的连接键,例如:
df1.join(df2
.withColumn('NewDF2Column', SOME_OPERATION)),
df1['key'] = df2['NewDF2Column'], how = 'left'))
PySpark 永远找不到用作连接键的 NewDF2Column。如果我首先在另一个数据框中创建它,它会起作用,但不是像这样动态地创建它。可能吗?谢谢!
Dataframes 是不可变的,这意味着您需要每次重新分配变量才能从中获取结果。在这种情况下,您在 join
操作的第一个参数上创建了 NewDF2Column
,但是您再次引用 NewDF2Column
的第二个参数看不到之前所做的更改。如何解决?
第一个选项
# Creating before joining
df2 = df2.withColumn('NewDF2Column', SOME_OPERATION)
output_df = df1.join(df2, df1['key'] = df2['NewDF2Column'], how='left')
第二个选项
# Creating a column to join with the same name as df1
output_df = df1.join(df2.withColumn('key', SOME_OPERATION), on='key', how='left')
我想创建一个列用作连接内部的连接键,例如:
df1.join(df2
.withColumn('NewDF2Column', SOME_OPERATION)),
df1['key'] = df2['NewDF2Column'], how = 'left'))
PySpark 永远找不到用作连接键的 NewDF2Column。如果我首先在另一个数据框中创建它,它会起作用,但不是像这样动态地创建它。可能吗?谢谢!
Dataframes 是不可变的,这意味着您需要每次重新分配变量才能从中获取结果。在这种情况下,您在 join
操作的第一个参数上创建了 NewDF2Column
,但是您再次引用 NewDF2Column
的第二个参数看不到之前所做的更改。如何解决?
第一个选项
# Creating before joining
df2 = df2.withColumn('NewDF2Column', SOME_OPERATION)
output_df = df1.join(df2, df1['key'] = df2['NewDF2Column'], how='left')
第二个选项
# Creating a column to join with the same name as df1
output_df = df1.join(df2.withColumn('key', SOME_OPERATION), on='key', how='left')