Scala UDF根据不同的概率随机分配值
我想创建一个UDF,根据不同的概率随机分配值 在以下示例中,取决于rand返回的值:Scala UDF根据不同的概率随机分配值,scala,apache-spark,apache-spark-sql,user-defined-functions,Scala,Apache Spark,Apache Spark Sql,User Defined Functions,我想创建一个UDF,根据不同的概率随机分配值 在以下示例中,取决于rand返回的值: 0到0.5该值应为A(50%概率) 0.8到1该值应为B(20%概率) 任何其他值应为c(30%概率) val name=数组(“A”、“B”、“C”) 这里没有什么出人意料的事情。调用两次rand函数,得到两个不同的随机值 为两个调用提供相同的种子: sqlContext.range(0, 100) .select( $"id", abs(rand(1)).alias("val")
- 0到0.5该值应为A(50%概率)
- 0.8到1该值应为B(20%概率)
- 任何其他值应为c(30%概率)
val name=数组(“A”、“B”、“C”)
这里没有什么出人意料的事情。调用两次
rand
函数,得到两个不同的随机值
为两个调用提供相同的种子:
sqlContext.range(0, 100)
.select(
$"id",
abs(rand(1)).alias("val"),
allocate(abs(rand(1))).alias("name")
)
或重用该值:
sqlContext.range(0, 100)
.withColumn("val", abs(rand))
.withColumn("name", allocate($"val"))
这里没有什么出人意料的事情。调用两次
rand
函数,得到两个不同的随机值
为两个调用提供相同的种子:
sqlContext.range(0, 100)
.select(
$"id",
abs(rand(1)).alias("val"),
allocate(abs(rand(1))).alias("name")
)
或重用该值:
sqlContext.range(0, 100)
.withColumn("val", abs(rand))
.withColumn("name", allocate($"val"))