Я использую Spark JDBC для чтения данных из базы данных MS SQL, но получаю странные результаты.
Например, ниже мой код для чтения записей из моей базы данных MS SQL. Обратите внимание, что таблицы, из которых я читаю данные, постоянно вставляются с записями.
//Extract Data from JDBC source
val jdbcTable = sqlContext.read.format("jdbc").options(
Map(
"url" -> jdcbUrl,
"driver" -> "net.sourceforge.jtds.jdbc.Driver",
"dbtable" ->
s"(SELECT COLUMNS WITH INNER JOINS WHERE tbl.ID > ${lastExtractUnixTime}) as t"))
.load
println(s"STEP 1] JDBC RECORDS COUNTS ---> ${jdbcTable.count()}")
val updateJdbcDF = jdbcTable
.withColumn("ID-COL1", trim($"COl1"))
.withColumn("ID-COL1", trim($"COl2"))
println(s"STEP 2] UPDATE JDBC RECORDS COUNTS ---> ${updateJdbcDF.count()}")
Я получаю 2 разных значения счетчика каждый раз, когда запускаю свою программу, например, я всегда получаю ${updateJdbcDF.count()}
count> ${jdbcTable.count()}
.
Может кто-нибудь объяснить мне, почему это происходит? В моем случае это создает множество проблем. Как ограничить количество jdbcTable
DataFrame после его создания. Я пробовал jdbcTable.cache()
, но безуспешно.
Записи становятся все больше и больше, когда я использую любую операцию с другим фреймом данных, полученным из jdbcTable
DataFrame. Вызывает jdbcTable
фрейм данных каждый раз, когда я использую любой фрейм данных, полученный из jdbcTable
фрейма данных.