温馨提示:本文翻译自stackoverflow.com,查看原文请点击:其他 - How to union multiple dataframe in pyspark within Databricks notebook
databricks dataframe pyspark union

其他 - 如何在Databricks笔记本中的Pyspark中合并多个数据框

发布于 2020-03-30 21:47:59

到目前为止,我从SO或联属网站发现的内容无法正常运行,或者无法在Databricks上进行我的测试,也许我在这里没有看到它。

这又是需要:

我有Avg_ 打开 _By_Year,Avg_ _By_Year,Avg_ _By_Year和Avg_ 关闭 _By_Year,它们都有一个共同的' Year '

所以我想将这三个结合在一起以获得最终的df,例如: Year, Open, High, Low, Close

目前,我必须使用丑陋的方式将它们加入“年份”列:

finalDF = Avg_Open_By_Year.join(Avg_High_By_Year, on=['Year'], how='left_outer').join(Avg_Low_By_Year, on=['Year'], how='left_outer').join(Avg_Close_By_Year, on=['Year'], how='left_outer')

我认为应该有一个优雅的方法来完成此任务,例如SQL中的UnionAll。

这里有一种可能的解决方案https://datascience.stackexchange.com/questions/11356/merging-multiple-data-frames-row-wise-in-pyspark/11361#11361,所选答案描述如下:

from functools import reduce  # For Python 3.x
from pyspark.sql import DataFrame

def unionAll(*dfs):
    return reduce(DataFrame.unionAll, dfs)

unionAll(td2, td3, td4, td5, td6, td7, td8, td9, td10)

但是,我在Databricks笔记本中执行此操作,这使我出错:

NameError:名称“ functools”未定义

在此处输入图片说明

如果有人能给我更多的光芒,我将不胜感激。非常感谢你。

查看更多

提问者
mdivk
被浏览
36
Ravi 2020-01-31 18:42

如@Mohamed的评论中所述,您必须导入functools才能使用它。

import functools