Как устранить эту ошибку в Spark: исключение java.io.NotSerializableException: oracle.jdbc.драйвер.Впередисточник

#scala #apache-spark

Вопрос:

Я работаю с Spark 3.1.2 И. Scala 2.12 У меня есть функция чтения, которая возвращает resultset тип. Код находится в следующем:

 def read_data(group_id: Int):java.sql.ResultSet =  {
 val table_name = "TABLE"
 val col_name = "COL"
 val query =
  """ select ID,F1,F2,F3,F4,F5,F6,F7
    | from """.stripMargin   table_name   """ where MOD(TO_NUMBER(substr(""" col_name """, -LEAST(2, LENGTH(""" col_name """)))),""" num_node """)=""" group_id
  
 val oracleUser = "ORCL"
 val oraclePassword = "XXXXXX"
 val oracleURL = "jdbc:oracle:thin:@//x.x.x.x:1521/ORCLDB"

 val ods = new OracleDataSource()
 ods.setUser(oracleUser)
 ods.setURL(oracleURL)
 ods.setPassword(oraclePassword)

 val con = ods.getConnection()
 val statement = con.createStatement()

 statement.setFetchSize(1000)     
 println("statement:",statement)

 val  resultSet : java.sql.ResultSet = statement.executeQuery(query) //
 return resultSet
  }

 val conf = new SparkConf()
  .setMaster("local[2]")
  .setAppName("testScala")
  .set("spark.executor.memory", "8g")
  .set("spark.executor.cores", "2")
  .set("spark.task.cpus","1")
 val sc = new SparkContext(conf)
 val rdd = sc.parallelize(group_list,num_node)
      .map(read_data).collect()
 println("rdd:",rdd)
 

Когда я запускаю приведенный выше код, он показывает мне эту ошибку:

   ERROR Executor: Exception in task 0.0 in stage 0.0 (TID 0)
  java.io.NotSerializableException: oracle.jdbc.driver.ForwardOnlyResultSet
 

Не могли бы вы, пожалуйста, подсказать мне, как сделать resultSet сериализуемым?

Любая помощь действительно ценится.