ITPub博客

首页 > IT职业 > IT生活 > Spark获取当前分区的partitionId

Spark获取当前分区的partitionId

IT生活 作者:post200 时间:2021-09-09 10:02:33 0 删除 编辑

我的原创地址:https://dongkelun.com/2018/06/28/sparkGetPartitionId/

前言

本文讲解Spark如何获取当前分区的partitionId,这是一位群友提出的问题,其实只要通过TaskContext.get.partitionId(我是在官网上看到的),下面给出一些示例。

1、代码

下面的代码主要测试SparkSession,SparkContext创建的rdd和df是否都支持。

package com.dkl.leanring.partitionimport org.apache.spark.sql.SparkSessionimport org.apache.spark.TaskContext/**
 * 获取当前分区的partitionId
 */object GetPartitionIdDemo {  def main(args: Array[String]): Unit = {    val spark = SparkSession.builder().appName("GetPartitionIdDemo").master("local").getOrCreate()    val sc = spark.sparkContext    val data = Seq(1, 2, 3, 4)    // 测试rdd,三个分区
    val rdd = sc.parallelize(data, 3)
    rdd.foreach(i => {
      println("partitionId:" + TaskContext.get.partitionId)
    })    import spark.implicits._    // 测试df,三个分区
    val df = rdd.toDF("id")
    df.show
    df.foreach(row => {
      println("partitionId:" + TaskContext.get.partitionId)
    })    // 测试df,两个分区
    val data1 = Array((1, 2), (3, 4))    val df1 = spark.createDataFrame(data1).repartition(2)
    df1.show()
    df1.foreach(row => {
      println("partitionId:" + TaskContext.get.partitionId)
    })

  }
}

2、结果

[图片上传失败...(image-ae7347-1533797078025)]



作者:董可伦
链接:https://www.jianshu.com/p/ede2bbabf802


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/2249/viewspace-2815492/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: JAVA Calendar
请登录后发表评论 登录
全部评论

注册时间:2019-07-17

  • 博文量
    124
  • 访问量
    17965