scala - 无法在 IntelliJ 上使用 Scala-Spark 将参数传递给连接类
问题描述
我最近完成了对 Scala 和 Spark 的学习。我正在尝试使用 JDBC 连接从 Postgres DB 上的表中读取数据。我创建了一个 Scala SBT 项目并创建了一个属性文件来存储所有连接属性。
我在connections.properties 文件中有以下属性:
devHost=xx.xxx.xxx.xxx
devPort=xxxx
devDbName=base
devUserName=username
devPassword=password
gpDriverClass=org.postgresql.Driver
我创建了一个 DBManager 类,在其中初始化连接属性:
import java.io.FileInputStream
import java.util.Properties
class DBManager {
val dbProps = new Properties()
val connectionProperties = new Properties()
dbProps.load(new FileInputStream(connections.properties))
val jdbcDevHostname = dbProps.getProperty("devHost")
val jdbcDevPort = dbProps.getProperty("devPort")
val jdbcDevDatabase = dbProps.getProperty("devDbName")
val jdbcDevUrl = s"jdbc:postgresql://${jdbcDevHostname}:${jdbcDevPort}/${jdbcDevDatabase}?ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory" + s",${uname},${pwd}"
connectionProperties.setProperty("Driver",dbProps.getProperty("gpDriverClass"))
connectionProperties.put("user", dbProps.getProperty("devUserName"))
connectionProperties.put("password", dbProps.getProperty("devPassword"))
}
在 Scala 对象中,我尝试使用所有这些详细信息,如下所示:
import org.apache.spark.sql.SparkSession
import com.gphive.connections.DBManager
object PartitionRetrieval {
def main(args: Array[String]): Unit = {
val dBManager = new DBManager();
val spark = SparkSession.builder().enableHiveSupport().appName("GP_YEARLY_DATA").getOrCreate()
val tabData = spark.read.jdbc(dBManager.jdbcDevUrl,"tableName",connectionProperties)
}
}
我参考了这个链接来创建上面的代码。当我单击项目上的“构建”时:我看到我编写的代码中未正确加载connections.properties 文件。谁能让我知道如何纠正错误?
解决方案
推荐阅读
- mysql - @Get 控制器和布尔查询中的 NestJS 验证失败(需要数字字符串)
- angular - Why does the selected attribute work for each ng-container?
- maven - 在 maven 中通过的 intelij 失败测试
- r - 找出以 x 为因数的范围内的所有数字?
- java - “可恢复错误”接口是否比处理多个“捕获”块中的恢复更有效?
- r - 有没有办法为正交/ TLS 回归模型绘制置信区间?
- php - 扩展 ArrayObject 的对象的 PhpStorm 中的类型提示
- c++ - 从抽象数据类型转换为泛型类型
- python - 如何将 2d Python 列表转换为 2d C++ 向量?
- sql - 如何在字符串的已知部分之后选择所有内容