数据处理生产环境_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
  }
}
相关推荐
九河云7 小时前
数字韧性时代,华为云CBR为业务连续性注入“免疫基因”
大数据·人工智能·安全·机器学习·华为云
Juicedata7 小时前
JuiceFS 企业版 5.3 特性详解:单文件系统支持超 5,000 亿文件,首次引入 RDMA
大数据·人工智能·机器学习·性能优化·开源
Prince-Peng7 小时前
技术架构系列 - 详解Redis
数据结构·数据库·redis·分布式·缓存·中间件·架构
蚁巡信息巡查系统8 小时前
网站信息发布再巡查机制怎么建立?
大数据·人工智能·数据挖掘·内容运营
云边云科技_云网融合8 小时前
AIoT智能物联网平台:架构解析与边缘应用新图景
大数据·网络·人工智能·安全
青岛前景互联信息技术有限公司8 小时前
政策支撑:应急部推动化工园区安全风险智能化管控平台有效应用!
大数据·人工智能·安全
才盛智能科技8 小时前
歪麦霸王餐&元K(才盛云)签订战略合作
大数据·人工智能·物联网·自助ktv系统·才盛云
WZgold1419 小时前
黄金突然跳水!是技术调整还是趋势反转?
大数据·经验分享
开源能源管理系统9 小时前
开源筑基,智领零碳:MyEMS 赋能零碳工厂全周期转型新实践
大数据·开源·能源·能源管理系统·零碳工厂
金融小师妹9 小时前
AI算法与多因子模型驱动:金价获利了结涌现后的高位下跌态势
大数据·人工智能·深度学习·机器学习