加載配置,我想一次初始化配置,然後在我的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最好的做法是什麼?