请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

rdd的partition分区问题


    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回答

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

0 回复 有任何疑惑可以回复我~
  • 提问者 KelvinChung #1
    那请问老师,就像这个wordcount案例,是用一次输入的,一行数据为一个partition,再进行拆解的吗?
    回复 有任何疑惑可以回复我~ 2020-03-08 18:31:01
  • Michael_PK 回复 提问者 KelvinChung #2
    hdfs或者文件的就是一个block一个partition,你打开跑作业的UI就能看到task数量,task数量就是partition数量
    回复 有任何疑惑可以回复我~ 2020-03-08 18:58:33
  • 提问者 KelvinChung #3
    非常感谢!
    回复 有任何疑惑可以回复我~ 2020-03-08 20:30:33
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信