使用ConfigParser在python中读取配置文件
我已经使用configparser在python编写的程序中读取配置。我现在正在从s3读取文件,但我的要求是在程序本身中定义配置,而不是从任何其他外部源。 编写的代码如下:使用ConfigParser在python中读取配置文件,python,apache-spark,amazon-s3,config,configuration-files,Python,Apache Spark,Amazon S3,Config,Configuration Files,我已经使用configparser在python编写的程序中读取配置。我现在正在从s3读取文件,但我的要求是在程序本身中定义配置,而不是从任何其他外部源。 编写的代码如下: config = configparser.ConfigParser() config.readfp(open(s3:path\config)) 配置文件格式: config.ini [section1] var1=Y var2=Y var3=['col1','col2'] 我正在读上面的文件,它位于s3中,但我不想从s
config = configparser.ConfigParser()
config.readfp(open(s3:path\config))
配置文件格式:
config.ini
[section1]
var1=Y
var2=Y
var3=['col1','col2']
我正在读上面的文件,它位于s3中,但我不想从s3中读取,而是想从程序本身读取。为了实现这一目标,需要做些什么
上面的代码是用pyspark程序编写的,我用spark submit命令传递配置文件,但要读取配置文件,我需要提供路径,这是不可取的。
在aws emr中提交spark:
'Args': ['spark-submit','--deploy-mode', 'cluster','--master', 'yarn','--executor-memory', conf['emr_step_executor_memory'],'--executor-cores', conf['emr_step_executor_cores'],'--conf','spark.yarn.submit.waitAppCompletion=true','--conf','spark.rpc.message.maxSize=1024',f'{s3_path}/file1.py', '--py-files',f'{s3_path}/file2.py',f'{s3_path}/file3.py',f'{s3_path}/file4.py','--files', f'{s3_path}/config ]
由于config.readfp(open(s3:path\config))行的原因,我需要提供s3路径,这是不可取的选项,要么从spark submit传递配置文件,使其他所有正在读取配置的python文件都可用,要么读取程序本身内部的配置。您可以这样做:
parser = configparser.ConfigParser()
parser.read_dict({'section1': {'key1': 'value1',
'key2': 'value2',
'key3': 'value3'},
'section2': {'keyA': 'valueA',
'keyB': 'valueB',
'keyC': 'valueC'},
'section3': {'foo': 'x',
'bar': 'y',
'baz': 'z'}})
检查详细信息以及实现此目的的其他替代方法
样本检索
parser["section1"]["key1"]
'value1'
拥有配置文件的全部目的是将运行时配置值与代码分离。如果不想这样做,请使用
configparser
将配置写入临时位置并将其传递给Spark。