Я хочу выполнить запрос mysql внутри foreachparition в spark и в конечном итоге получить все результаты запроса во фрейме данных.Это выглядит так:
var rowAccumulator: RowAccumulator = new RowAccumulator
foreachPartition((p) => {
val result = MysqlService.getData(query, p)
rowAccumulator.add(result)
})
, затем преобразуйте rowAccumulator
во фрейм данных.
Однако со временем он работает медленно.Первый запрос занимает 130 мс, 20-й - 150000 мс, например.Я замечаю, что в MysqlService я каждый раз создаю сессию БД, и это может быть не правильно.Есть ли лучший способ сделать это?
Обновление: MysqlService используется в разных местах, и мы хотим сделать код легким в обслуживании.Если это не будет работать должным образом, мы могли бы применить другой способ выполнения запроса, например, используя spark jdbc.Мне любопытно, по какой причине этот запрос выполняется медленно.