Apache spark 如何为SparkSession使用自定义配置文件(不使用spark submit提交应用程序)?
我有一个独立的python脚本,它通过调用以下代码行创建一个Apache spark 如何为SparkSession使用自定义配置文件(不使用spark submit提交应用程序)?,apache-spark,pyspark,Apache Spark,Pyspark,我有一个独立的python脚本,它通过调用以下代码行创建一个SparkSession,我可以看到它完美地配置了spark会话,如spark defaults.conf文件中所述 spark = SparkSession.builder.appName("Tester").enableHiveSupport().getOrCreate() 如果我想作为参数传递另一个包含spark配置的文件,我想使用它来代替spark default.conf,那么在创建SparkSession时如何指定它 我可
SparkSession
,我可以看到它完美地配置了spark会话,如spark defaults.conf
文件中所述
spark = SparkSession.builder.appName("Tester").enableHiveSupport().getOrCreate()
如果我想作为参数传递另一个包含spark配置的文件,我想使用它来代替spark default.conf
,那么在创建SparkSession
时如何指定它
我可以看到我可以传递一个SparkConf
对象,但是有没有办法从包含所有配置的文件中自动创建一个
我必须手动解析输入文件并手动设置适当的配置吗?如果您不使用
spark submit
您最好的选择是覆盖spark\u CONF\u DIR
。为每个配置集创建单独的目录:
$ configs tree
.
├── conf1
│ ├── docker.properties
│ ├── fairscheduler.xml
│ ├── log4j.properties
│ ├── metrics.properties
│ ├── spark-defaults.conf
│ ├── spark-defaults.conf.template
│ └── spark-env.sh
└── conf2
├── docker.properties
├── fairscheduler.xml
├── log4j.properties
├── metrics.properties
├── spark-defaults.conf
├── spark-defaults.conf.template
└── spark-env.sh
并在初始化任何依赖JVM的对象之前设置环境变量:
import os
from pyspark.sql import SparkSession
os.environ["SPARK_CONF_DIR"] = "/path/to/configs/conf1"
spark = SparkSession.builder.getOrCreate()
或
这是一种变通方法,在复杂的情况下可能不起作用。您可以使用来指定不同的文件,但请注意。我并不真正使用spark submit并将其作为python脚本运行,因为我自己手动创建spark上下文,所以我不能使用--properties文件选项。我似乎无法将现有代码传递给spark submit并使其工作。
import os
from pyspark.sql import SparkSession
os.environ["SPARK_CONF_DIR"] = "/path/to/configs/conf2"
spark = SparkSession.builder.getOrCreate()