代码之家  ›  专栏  ›  技术社区  ›  Prasanna Saraswathi Krishnan

正在执行pyspark df。文件中的join命令

  •  0
  • Prasanna Saraswathi Krishnan  · 技术社区  · 6 年前

    我有多个要加入的pyspark数据帧。

    finalDF = df1.join(df2, 'key2', 'left_outer')
    .join(df3, 'key3')
    .join(df4, 'key4')
    .join(df5, 'key5')
    

    现在,我可能没有所有的数据帧(df2-5)。所以,我只想加入那些存在的,比如说我可以通过编程找到的。

    我想建立一个动态df。join命令并根据df2-df5的可用性执行。

    我考虑根据需要/可用性将命令构建/写入文件(使用if-else),然后将文件作为pyspark命令执行。这样做可行吗?

    或者,有没有更好的方法?请提出建议。TIA。

    1 回复  |  直到 6 年前
        1
  •  1
  •   pault Tanjin    6 年前

    如果知道存在哪些数据帧,可以使用 if/else :

    finalDF = df1
    if df2_exists:
        finalDF = finalDF.join(df2, 'key2', 'left_outer')
    if df3_exists:
        finalDF = finalDF.join(df3, 'key3')
    if df4_exists:
        finalDF = finalDF.join(df4, 'key4')
    if df5_exists:
        finalDF = finalDF.join(df5, 'key5')
    

    这并不意味着需要多个步骤,因为spark很懒惰。如果您查看 finalDF.explain() ,您将看到它将并行执行所有连接,而不是串行执行所有连接。