相关疑难解决方法(0)

Spark Dataframe随机UUID在每次转换/操作后都会更改

我有一个Spark数据帧,其中包含一个包含生成的UUID的列.但是,每次我对数据帧执行操作或转换时,它都会更改每个阶段的UUID.

如何仅生成一次UUID并使UUID保持静态.

一些重新生成我的问题的示例代码如下:

def process(spark: SparkSession): Unit = {

  import spark.implicits._

  val sc = spark.sparkContext
  val sqlContext = spark.sqlContext
  sc.setLogLevel("OFF")

  // create dataframe
  val df = spark.createDataset(Array(("a", "1"), ("b", "2"), ("c", "3"))).toDF("col1", "col2")
  df.createOrReplaceTempView("df")
  df.show(false)

  // register an UDF that creates a random UUID
  val generateUUID = udf(() => UUID.randomUUID().toString)

  // generate UUID for new column
  val dfWithUuid = df.withColumn("new_uuid", generateUUID())
  dfWithUuid.show(false)
  dfWithUuid.show(false)    // uuid is different

  // new transformations also change the uuid
  val dfWithUuidWithNewCol = dfWithUuid.withColumn("col3", df.col("col2")+1)
  dfWithUuidWithNewCol.show(false) …
Run Code Online (Sandbox Code Playgroud)

uuid scala dataframe apache-spark

9
推荐指数
2
解决办法
4908
查看次数

标签 统计

apache-spark ×1

dataframe ×1

scala ×1

uuid ×1