Apache Spark JDBCRDD 使用 HDFS 吗?

3
Apache Spark JDBCRDD使用HDFS来存储和分发数据库记录到工作节点吗?我们正在使用JdbcRDD与Apache Spark上的数据库进行交互。我们想知道Apache Spark是否使用HDFS来分发和存储数据库表记录,或者工作节点是否直接与数据库交互。
1个回答

2
JdbcRDD不使用HDFS,直接从JDBC连接中读取数据到worker的内存中的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]
      }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接