Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 如何为SparkSession使用自定义配置文件(不使用spark submit提交应用程序)?_Apache Spark_Pyspark - Fatal编程技术网

Apache spark 如何为SparkSession使用自定义配置文件(不使用spark submit提交应用程序)?

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时如何指定它 我可

我有一个独立的python脚本,它通过调用以下代码行创建一个
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()