数据处理生产环境_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
  }
}
相关推荐
山屿落星辰几秒前
hixl - 让分布式训练“零拷贝“通信
分布式
jiayong2333 分钟前
Git 常见错误与详细解决方案
大数据·git·elasticsearch
视***间41 分钟前
视程空间AIR系列——小体积藏强芯,赋能机器人/机器狗全域落地
大数据·人工智能·机器人·机器狗·ai算力·视程空间
江苏赛融科技1 小时前
打破传统管理壁垒,智慧园区重构楼宇资产管理模式
大数据·人工智能·智慧园区·楼宇资产管理·楼宇智能化
没有梦想的咸鱼185-1037-16631 小时前
农业普查大数据与AI融合的数字农业与粮食安全智慧决策
大数据·人工智能·chatgpt·数据分析
jiayong231 小时前
Git 分支命名、区别、联系与顺序关系说明
大数据·git·elasticsearch
萤丰信息2 小时前
破局提质,共生发展——智慧园区建设的痛点破解与未来方向
大数据·人工智能·智慧城市
梦梦代码精2 小时前
LikeShop按摩到家系统:2026年本地生活创业新风口,上门服务O2O源码私有化部署实战
大数据·docker·小程序·uni-app·生活·高并发·开源软件
EasyDSS2 小时前
私有化视频会议系统/智能会议管理系统EasyDSS以数据能力重构视频会议协同新生态
大数据·人工智能·重构
逍遥德2 小时前
SpringBoot自带TaskScheduler 接口使用详解:(02)微服务多实例模式下,爆发任务重复执行问题
spring boot·分布式·后端·微服务·中间件