数据处理生产环境_Spark根据给定的轨迹编号生成随机16进制颜色

需求

根据给定的轨迹编号在这一列后面生成随机颜色_16

代码

Scala 复制代码
package test

import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.functions._
import scala.util.hashing.MurmurHash3

object randomV2 {
  def main(args: Array[String]): Unit = {
    val spark = SparkSession.builder()
      .appName("ColorGeneration")
      .master("local[*]")
      .getOrCreate()

    import spark.implicits._

    // 创建DataFrame使用提供的数据,这里是测试数据,
    //生产环境中我们一般是读取的上一个节点传来的dataframe,直接调下面的方法,自定义函数即可,
    //完全可以实现我们想要的功能,可根据我们的具体虚修再做修改
    //val df = spark.read.csv("xxx.csv", header = true, inferSchema = true),

    val data = Seq(
      ("吃饭", "睡觉"),
      ("吃饭", "宋江"),
      ("郭靖", "宋江"),
      ("杨过", "奥特曼")
    )
    val df1 = data.toDF("a1", "a2")
    

    // 定义基于种子的随机颜色生成函数
    def getRandomColorFromSeed(seed: String): String = {
      val hashed = MurmurHash3.stringHash(seed) // 使用MurmurHash3生成种子的哈希值
      val r = (hashed & 0xFF0000) >> 16
      val g = (hashed & 0x00FF00) >> 8
      val b = hashed & 0x0000FF
      f"#$r%02x$g%02x$b%02x"
    }

    val getRandomColorWithSeedUDF = udf((seed: String) => getRandomColorFromSeed(seed))

    val dfWithColor = df1.withColumn("c1", getRandomColorWithSeedUDF($"a1"))

    dfWithColor.show() // 显示包含使用相同随机种子生成的新 "c1" 列的 DataFrame
  }
}
相关推荐
geneculture14 分钟前
论纯粹融智学视域的AI宪法AI Constitution
大数据·人工智能·融智学应用场景·哲学与科学统一性·融智时代(杂志)·ai constitution
晨非辰16 分钟前
吃透C++两大默认成员函数:const成员函数、 & 取地址运算符重载
java·大数据·开发语言·c++·人工智能·后端·面试
一切皆是因缘际会25 分钟前
大模型幻觉深度解析:成因、落地危害与工程级解决方案
大数据·人工智能·深度学习·安全·ai·架构
好赞科技29 分钟前
深度盘点2026年八大高口碑美容小程序:解锁智能护肤新体验
大数据·人工智能
旷世奇才李先生32 分钟前
Redis 7\.0实战:分布式缓存与高可用集群搭建全指南
redis·分布式·缓存
IT观测44 分钟前
城市生命线工程五大核心企业
大数据
烟花情报局1 小时前
陕西省应急管理厅最新发布!
大数据
逐米时代1 小时前
四川制造企业智改数转怎么申报?本地化AI项目落地一般分5步
大数据·人工智能
eastyuxiao9 小时前
思维导图拆解项目范围 3 个真实落地案例
大数据·运维·人工智能·流程图
Meya112714 小时前
别再人工硬扛机房管理!智能 U 位系统,让机房管理一键数字化
大数据·运维