pyspark:使用架构加入?或者将架构转换为列表?

时间:2016-06-27 23:58:23

标签: python pyspark spark-dataframe

我使用以下代码连接两个数据框:

iimSet('TITLE', title.replace(/FULLNAME/g, '{{NAME}}'));

上述代码运行正常,但有时new_df = df_1.join(df_2, on=['field_A', 'field_B', 'field_C'], how='left_outer') df_1有数百列。是否可以使用架构加入而不是手动添加所有列?或者有没有办法可以将模式转换为列表?非常感谢!

1 个答案:

答案 0 :(得分:2)

如果您的意思是某种方式让join合并了列dtypes,则无法加入架构。您可以做的是首先提取列名,然后将它们作为on=的列表参数传递,如下所示:

join_cols = df_1.columns
df_1.join(df_2, on=join_cols, how='left_outer')

现在显然您必须编辑join_cols的内容,以确保它只包含您实际想要加入df_1df_2的名称。但是如果有数百个有效列可能比逐个添加它们快得多。您还可以将join_cols作为df_1df_2列的交集,然后在那里进行编辑,如果这更合适。

编辑:虽然我应该补充说Spark 2.0版本现在几乎是任何一天,但我还没有熟悉所有的变化。所以这可能值得研究,或提供未来的解决方案。