数据处理生产环境_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
  }
}
相关推荐
说私域10 小时前
AI智能名片S2B2C商城小程序在微商中的应用与影响
大数据·人工智能·小程序·流量运营
毕不了业的硏䆒僧10 小时前
NVIDIA DGX Spark | Ubuntu cuda13.0安装Pytorch GPU版本
pytorch·ubuntu·spark
像少年啦飞驰点、10 小时前
Java大厂面试真题:Spring Boot + Kafka + Redis 在电商场景下的实战应用
java·spring boot·redis·分布式·kafka·面试题·电商秒杀
2501_9443321610 小时前
如何联系北京的金融业务流程外包服务商?
大数据·人工智能·金融
CHrisFC10 小时前
环境第三方检测机构LIMS系统选型:从合规基础到效率制胜
java·大数据·人工智能
小五传输10 小时前
探秘主流的内外网文件传输方式,解锁高效安全共享新途径
大数据·运维·安全
易晨 微盛·企微管家11 小时前
2025企业微信AI智能机器人实战指南:3步实现客服自动化
大数据·人工智能·算法
Hello.Reader11 小时前
Flink DataGen SQL Connector 本地造数、压测、边界数据与“像真数据”的生成技巧
大数据·sql·flink
安河桥畔11 小时前
Git使用
大数据·git·elasticsearch
Hello.Reader11 小时前
Flink SQL 压测最短闭环Print 验证正确性 + BlackHole 榨干性能上限(附 Join/Agg/TopN/UDF 模板)
大数据·sql·flink