Apache Spark JDBCRDD использует HDFS?

Использует ли Apache Spark JDBCRDD HDFS для хранения и распространения записей базы данных на рабочие узлы? Мы используем JdbcRDD для взаимодействия с базой данных на apache spark. Нам интересно, использует ли Apache Spark HDFS для распространения и хранения записей таблицы базы данных или рабочие узлы напрямую взаимодействуют с базой данных.


person Jessica Smith    schedule 05.08.2015    source источник


Ответы (1)


JdbcRDD не использует HDFS, считывает данные из соединения JDBC напрямую в RDD в рабочей памяти. Если вам нужны результаты в HDFS, вам придется явно сохранить RDD в HDFS.

Вы можете увидеть, как работает JdbcRDD, здесь https://github.com/apache/spark/blob/master/core/src/main/scala/org/apache/spark/rdd/JdbcRDD.scala

RDD должны реализовывать метод compute, который возвращает итератор для значений каждого раздела в RDD. Реализация JdbcRDD просто обертывает итератор набора результатов JDBC:

override def getNext(): T = {
      if (rs.next()) {
        mapRow(rs)
      } else {
        finished = true
        null.asInstanceOf[T]
      }
}
person mattinbits    schedule 05.08.2015