在spark配置中设置连接参数

llmtgqce  于 2021-05-16  发布在  Spark
关注(0)|答案(2)|浏览(483)

我正在尝试将jdbc表读入sparkDataframe。通常我们会这样做。

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")

有没有办法在中指定jdbc uri和auth\u选项 spark.conf 这样spark就可以自动拾取它们。

q0qdq0h2

q0qdq0h21#

为什么不使用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
e5nszbig

e5nszbig2#

如spark配置文档中所述,您可以使用 spark.hadoop. 将任何设置传递给spark的前缀
... 添加配置 “spark.hadoop..def=xyz” 表示添加hadoop属性 “.def=xyz” ... 它们可以被视为与正常Spark特性相同,可以在 $SPARK_HOME/conf/spark-defaults.conf 即。, spark.hadoop.any.setting 可以通过标准spark配置文件或从命令行使用 --conf 参数,然后使用名称在spark中检索 any.setting .

相关问题