在Spark配置中设置连接参数



我正在尝试将JDBC表读取到Spark数据帧中。通常我们会这样做。

val sparkSessionBuiltObject: SparkSession = SparkSession.builder.config(customconfig)
.master("local[*]")
.appName("Application")
.getOrCreate()
sparkSessionBuiltObject.read
.jdbc(s"jdbc:sqlserver://localhost:1433;databaseName=dbname",
sourceTable,
jdbcConnectionProperties)

当使用Casssandra连接器或S3时,我们可以在Spark conf中设置主机和身份验证,并使用该配置来构建类似的Spark会话

generatedSparkConf.set("spark.cassandra.connection.host", "cassandra_host")
.set("spark.cassandra.auth.username", "cassandra_username")
.set("spark.cassandra.auth.password", "cassandra_password")
val sparkSessionBuiltObject: SparkSession = SparkSession.builder.config(customconfig)
.master("local[*]")
.appName("Application")
.getOrCreate()

generatedSparkConf.set("fs.s3a.connection.ssl.enabled",value = "false")
.set("fs.s3a.endpoint","s3.endpoint")
.set("fs.s3a.access.key","s3.accessKey")
.set("fs.s3a.secret.key","s3.secretKey")

有没有办法在spark.conf中指定JDBC uri和auth_options,以便Spark可以自动选择它们。

如Spark配置文档中所述,您可以使用spark.hadoop.前缀将任何设置传递给Spark

。。。添加配置“spark.hadoop.abc.def=xyz”表示正在添加hadoop属性“abc.def=xyz”。。。它们可以被视为与正常火花特性相同,可在$SPARK_HOME/conf/spark-defaults.conf

也就是说,spark.hadoop.any.setting可以通过标准Spark配置文件或使用--conf参数从命令行传递到您的应用程序中,然后使用名称any.setting在Spark中检索。

为什么不使用config.properties文件?

val props = new Properties()
props.load(new FileInputStream("config.properties"))
val db_password = props.getProperty("db_password")

config.properties 的内容

db_password=xxxxx

然后使用--files参数提交

spark-submit --deploy-mode client --files config.properties --class testConf /home/code/spark/spark_test-1.0-SNAPSHOT-jar-with-dependencies.jar

最新更新