У меня есть сценарий использования, где мне нужно записать в базу данных postgres из spark,
Я прочитал входящий файл в rdd, мой окончательный результат - rdd, который я могу записать в postgres. Внутри rddФункция карты Я пытаюсь создать шаблон jdbc и записать его в postgres. Я хочу, чтобы мой шаблон jdbc был синглтоном, а я сделал jdbctemplate как Object.But, но он по-прежнему не работает и открывает слишком много соединений.
rddToPostgres.map(postgresdata => toPostgresDatabase(r))
toPostgresDatabase(postgresdata:Row) {
var dataToLoad = new MapSqlParameterSource().addValue("Nifi_Param",postgresdata.getAs("Nifi_Param")
var insertStatement = "insert in to postgresschema.nifitab(nifi_param) values(:nifi_param)"
new JdbcTemplate().getJdbcConn().update(insertStatement,dataToLoad)
}
}
Object JdbcTemplate(){
def getJdbcConn() {
new NamedParameterJdbcTemplate(new DriverManagerDataSource().setDriverClassName().setPassword("XXXXX").setUsername("XXXXX"));
}
, хотя JdbcTemplate является синглтоном, поскольку он определен. Объект, который вызывается несколько раз, может кто-нибудь подсказать, как создать синглтон в scala и использовать его внутри rdd.map?