如何动态创建并命名Spark DataFrame 遍历路径列表读取parquet文件
你原有代码的问题在于:name只是循环内的临时变量,两次赋值都是修改这个name变量本身,元组里存储的表名字符串不会自动转换为当前作用域的变量名。
推荐方案:用字典统一管理所有DataFrame(最佳实践)
这种方式不会污染全局命名空间,也方便后续批量处理所有表,代码实现如下:
# 初始化空字典存储所有表 df_dict = {} for name, path in paths: df_dict[name] = spark.read.parquet(path) # 后续使用时直接通过表名取即可 df_dict['table1'].show() df_dict['table2'].printSchema()
可选方案:直接生成独立全局变量(不推荐)
如果确实需要直接使用table1、table2这类独立变量,可以修改全局命名空间实现,但要注意如果表名和现有变量重名会直接覆盖原有变量,排查问题难度更高:
for name, path in paths: globals()[name] = spark.read.parquet(path) # 后续可直接调用对应表名变量 table1.show()
内容的提问来源于stack exchange,提问作者fjjones88
相关产品推荐
相关产品推荐

