需要帮助来创建动态数据框

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了需要帮助来创建动态数据框相关的知识,希望对你有一定的参考价值。

请您调查一下。我试图创建一个数据框,而我以下面的方式给出创建数据框的原因是使它动态化,但是表达式以字符串形式传递,而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'
答案

我建议在代表spark命令的字符串上使用pyspark而不是使用exec。 pyspark有一个非常不错的界面,用于在python中执行spark命令。它还在csv模块上具有方便的功能pyspark.sql。您的代码将如下所示:

loads data from a csv file into a spark dataframe

但是,如果您的数据存储在一个csv中,我怀疑没有足够的数据来真正保证使用spark,这会产生大量开销,并且意在处理非常大的数据集。我建议先尝试熊猫from pyspark.sql import SparkSession spark =(SparkSession.builder .appName(YOUR_APP_NAME) .getOrCreate()) csv_df = spark.csv('path/to/csv') ,并且仅当您的代码在熊猫中运行得太慢时才切换到spark。

另一答案

您可以尝试如下所示的配置文件

which also has a handy way of loading csv data into a dataframe

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

另一答案

嘿,得到答案...

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"])

创建此功能的动机是使用pyspark支持的不同格式的文件动态创建数据帧。现在,使用此功能,我可以通过传递位置和文件格式来创建pyspark支持的任何类型的文件格式的数据框。

我感谢所有帮助。

以上是关于需要帮助来创建动态数据框的主要内容,如果未能解决你的问题,请参考以下文章

在android中动态创建选项卡并使用传入的参数加载片段

在动态创建单选按钮方面需要帮助

Android 依据EditText搜索框ListView动态显示数据

Android 根据EditText搜索框ListView动态显示数据

链接动态创建的文本框和标签

需要帮助在一个动态文本框中显示多个输入文本组件