首页 > 解决方案 > 使用 pyspark 联合 Delta Lake 表

问题描述

我在 Delta Lake 中存储了多个表,所有表都具有相同的模式。我想使用 unionByName 创建一个数据框。

当前未优化的代码:

from functools import reduce
import os

filelist = [x for x in os.listdir(DELTA_LAKE_FOLDER)]

def load_raw_data(filelist):
    l = []
    for f in filelist:
        l.append(spark.read.format("delta").load(DELTA_LAKE_FOLDER + "/{}".format(f)))
    return reduce(DataFrame.unionByName, l)

# Save as a single table (probably not needed if I can batch read efficiently)
load_raw_data(filelist).write.format('delta').save(DELTA_LAKE_FOLDER + "union_dataframe")

查看文档,您似乎无法像使用 csv 格式那样使用 /* 来读取多个 Delta Lake 表。谢谢

标签: pysparkdelta-lake

解决方案


推荐阅读