首页 > 解决方案 > 如何创建动态数据框

问题描述

我试图创建一个数据框,我以以下方式创建数据框的原因是使其动态,但表达式作为字符串传递,并且 exec 命令无法创建数据框并分配到一个变量。

这是我的代码:

def fileReader(inputFileType,sourceFilePath,inputFileType):
 value ='true'
 header='header'


 a= "spark.read.option('"+header+"','"+value+"')."+inputFileType+"('"+sourceFilePath+"')"
 print(a)
 print(type(a))
 ds = exec(a)
 return 'True'

标签: pythondataframeapache-sparkpysparkazure-databricks

解决方案


您可以尝试使用如下配置文件

import json
files = json.loads('{
  "fileA": {
    "header": "true",
    "inputFileType": "csv",
    "sourceFilePath": "path_to_fileA"
  },
  "fileB": {
    "header": "true",
    "inputFileType": "parquet",
    "sourceFilePath": "path_to_fileB"
  }
}')


df_dict = {}
for file in files:
    df_dict['file'] = spark.read.option('header',file["header"]).format(file["inputFileType"]).path(file["sourceFilePath"])

然后,您将获得具有不同格式和文件路径的数据框字典。


推荐阅读