Spark獲取當前分割槽的partitionId

post200發表於2021-09-09

我的原創地址:

前言

本文講解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)]



作者:董可倫
連結:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2249/viewspace-2815492/,如需轉載,請註明出處,否則將追究法律責任。

相關文章