pyspark:使用模式加入?或者将架构转换为列表?
Posted
技术标签:
【中文标题】pyspark:使用模式加入?或者将架构转换为列表?【英文标题】:pyspark: join using schema? Or converting the schema to a list? 【发布时间】:2016-06-27 23:58:22 【问题描述】:我正在使用下面的代码来连接两个数据框:
new_df = df_1.join(df_2, on=['field_A', 'field_B', 'field_C'], how='left_outer')
上述代码运行良好,但有时df_1
和df_2
有数百列。是否可以使用模式加入而不是手动添加所有列?或者有没有办法可以将模式转换为列表?非常感谢!
【问题讨论】:
【参考方案1】:如果您的意思是以某种方式让 join
合并列 dtypes,则您不能加入架构。您可以先提取列名,然后将它们作为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 版本几乎是现在任何一天,我还没有精通所有的变化。所以这可能也值得研究,或提供未来的解决方案。
【讨论】:
以上是关于pyspark:使用模式加入?或者将架构转换为列表?的主要内容,如果未能解决你的问题,请参考以下文章