【问题标题】:Dynamically load dataframe using a for-loop in PySpark在 PySpark 中使用 for 循环动态加载数据帧
【发布时间】:2019-08-20 00:01:20
【问题描述】:

我正在尝试将一些数据动态加载到 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.x dataframe for-loop pyspark


    【解决方案1】:

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

    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'] 等访问您的表。

    【讨论】:

    • 谢谢!我想看看如何提高加载表的重复性,这可能会很多。
    猜你喜欢
    • 1970-01-01
    • 2019-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-19
    • 2014-10-18
    • 2017-09-29
    相关资源
    最近更新 更多