rdd的partition分区问题

来源:8-3 -实战之将统计结果写入到MySQL数据库中

KelvinChung

2020-03-08


    result.foreachRDD(rdd => {
      rdd.foreachPartition(partitionOfRecords => {
        val connection = createConnection()
        partitionOfRecords.foreach(record => {
          val sql = "insert into wordcount(word, wordcount) values('" + record._1 + "'," + record._2 + ")"
          connection.createStatement().execute(sql)
        })

        connection.close()
      })
    })

比如说一次输入, a b a a c,然后经过map跟reduce处理出来是(a,3),(b,1),(c,1),那请问老师怎么知道这个就是rdd中的一个partition呢(因为用到rdd.foreachPartition)?如果一次输入很大量的数据,也是这样分区的吗?

写回答

1回答

Michael_PK

2020-03-08

rdd的partition有几个地方相关。比如说:你读kafka的数据的时候,如果采用direct模式的话,那就是和你的kafka的partition数一样,如果中间你的算子没有可以调整分区数量。  如果你算子调整了,那就是调整后的partition数量。

0
3
KelvinChung
非常感谢!
2020-03-08
共3条回复

Spark Streaming实时流处理项目实战

Flume+Kafka+Spark Streaming 构建通用实时流处理平台

1404 学习 · 571 问题

查看课程