我正在尝试将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