首页 > 解决方案 > 在 PySpark 中使用 for 循环动态加载数据帧

问题描述

我正在尝试将一些数据动态加载到 pyspark 中的数据框中。我想传入一堆表名并迭代加载它们并将数据框命名为列表中的名称。

这是我尝试过的:

rel_path = 'some/path/'

tables = ['a', 'b', 'c', 'd', 'e', 'f']

for table in candidate_tables:
  table_path = rel_path + table + '/*'
  table = spark.read.parquet(table_path)

>>> table

我发现我只能读取第一个表(a)并且表名是'table'。甚至可以这样做,还是坚持一一加载?

标签: python-3.xdataframefor-looppyspark

解决方案


在全局环境中创建动态数量的表不是一个好习惯。最简单的解决方案是使用字典来保存所有表格:

rel_path = 'some/path/'

names = ['a', 'b', 'c', 'd', 'e', 'f']
tables = {}

for name in names:
  table_path = rel_path + name + '/*'
  tables[name] = spark.read.parquet(table_path)

然后你可以通过table['a'], table['b']etc访问你的表。


推荐阅读