需要帮助来创建动态数据框
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 依据EditText搜索框ListView动态显示数据