Apache Spark JDBCRDD使用HDFS?

时间:2015-08-05 09:21:05

标签: hadoop apache-spark hdfs spark-streaming rdd

Apache Spark JDBCRDD是否使用HDFS存储数据库记录并将其分发给工作节点?我们正在使用JdbcRDD与apache spark上的数据库进行交互。我们想知道Apache Spark是否使用HDFS来分发和存储数据库表记录,或者工作节点是否直接与数据库进行交互。

1 个答案:

答案 0 :(得分:2)

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]
      }
}