pyspark:使用架构加入?或者将架构转换为列表?
pyspark: join using schema? Or converting the schema to a list?
我正在使用以下代码连接两个数据框:
new_df = df_1.join(df_2, on=['field_A', 'field_B', 'field_C'], how='left_outer')
上面的代码工作正常,但有时 df_1
和 df_2
有数百列。是否可以使用模式加入而不是手动添加所有列?或者有什么方法可以将模式转换为列表?非常感谢!
如果您的意思是以某种方式让 join
合并列数据类型,则您不能加入模式。您可以做的是先提取列名,然后将它们作为 on=
的列表参数传递,如下所示:
join_cols = df_1.columns
df_1.join(df_2, on=join_cols, how='left_outer')
现在显然您必须编辑 join_cols
的内容以确保它只有您实际想要加入的名称 df_1
和 df_2
。但是,如果有数百个有效列,这可能比一一添加要快得多。您还可以将 join_cols 设为 df_1
和 df_2
列的交集,然后根据需要进行编辑。
编辑:虽然我应该补充一点,Spark 2.0 的发布实际上是现在的任何一天,而且我还没有精通所有的变化。因此,这可能也值得研究,或提供未来的解决方案。
我正在使用以下代码连接两个数据框:
new_df = df_1.join(df_2, on=['field_A', 'field_B', 'field_C'], how='left_outer')
上面的代码工作正常,但有时 df_1
和 df_2
有数百列。是否可以使用模式加入而不是手动添加所有列?或者有什么方法可以将模式转换为列表?非常感谢!
如果您的意思是以某种方式让 join
合并列数据类型,则您不能加入模式。您可以做的是先提取列名,然后将它们作为 on=
的列表参数传递,如下所示:
join_cols = df_1.columns
df_1.join(df_2, on=join_cols, how='left_outer')
现在显然您必须编辑 join_cols
的内容以确保它只有您实际想要加入的名称 df_1
和 df_2
。但是,如果有数百个有效列,这可能比一一添加要快得多。您还可以将 join_cols 设为 df_1
和 df_2
列的交集,然后根据需要进行编辑。
编辑:虽然我应该补充一点,Spark 2.0 的发布实际上是现在的任何一天,而且我还没有精通所有的变化。因此,这可能也值得研究,或提供未来的解决方案。