加载配置,我想一次初始化配置,然后在我的PySpark项目的许多模块使用它。什么是最好的做法PySpark从外部文件
我看到2种方法来做到这一点。
- 负荷它在进入点和作为参数传递给每个功能
main.py:
with open(sys.argv[1]) as f:
config = json.load(f)
df = load_df(config)
df = parse(df, config)
df = validate(df, config, strict=True)
dump(df, config)
但似乎unbeauty通过一个外部参数给每个功能。
- 负载在config.py配置,并且每个模块
config.py
import sys
import json
with open(sys.argv[1]) as f:
config = json.load(f)
main.py
from config import config
df = load_df()
df = parse(df)
df = validate(df, strict=True)
dump(df)
在导入该对象
和每个模块中添加行
from config import config
看起来更美观,因为配置不是严格意义上的功能论证。这是他们执行的一般情况。
不幸的是,PySpark泡菜config.py并试图执行它在服务器上,但没有通过sys.argv中给他们! 所以,我看到错误时运行
File "/PycharmProjects/spark_test/config.py", line 6, in <module>
CONFIG_PATH = sys.argv[1]
IndexError: list index out of range
什么是与一般的配置,从文件加载到工作,在PySpark最好的做法是什么?