python-3.x - 在 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'。甚至可以这样做,还是坚持一一加载?
解决方案
在全局环境中创建动态数量的表不是一个好习惯。最简单的解决方案是使用字典来保存所有表格:
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访问你的表。
推荐阅读
- javascript - 如何使用正则表达式编写路径
- amazon-web-services - AWS Cloudformation / Codepipeline 参数:[ProjectId] 必须有值
- javascript - Javascript将字符串切成指定长度的块存储在变量中
- sql-server - Docker - 在作曲家之前或之后运行 Dockerfile 如何?
- python - 如何根据已计算的统计数据制作蜡烛图/箱线图?
- javascript - 当使用来自另一个函数的参数单击按钮时,我想将用户重定向到网页?
- python - 使用 multiprocess.Pool 同时运行 2 个应用程序
- c# - C#:设计一个更快的 Assert 函数,仅在触发时格式化错误字符串
- ruby-on-rails - Ruby on Rails 应用程序 - 没有要加载的文件
- excel - 将超过 24 小时的时间转换为 24 小时的时间