![](/img/trans.png)
[英]How to append an element to an array column of a Spark Dataframe?
[英]How to append an array column to spark dataframe
我需要按某个因素复制数据,以下是我如何以10
为因数进行复制
val exploded_df = spark.sql("select * , explode(array(0,1,2,3,4,5,6,7,8,9,10)) as salted_key from my_table ")
但是,如果我需要将乘数增加100,则此过程不可行。
想做这样的事情,但这是行不通的
val explode_factor = 20
val exploded_df = my_table.withColumn("salted_key", explode(List.range(0, explode_factor.toInt, 1).toArray))
试图创建一个UDF
但没有运气,我如何仅通过更改explode_factor
实现这一explode_factor
您可以使用sequence
功能(从Spark 2.4开始提供)
import org.apache.spark.sql.functions.{sequence, explode, lit}
val explode_factor = 20
val exploded_df = my_table.withColumn("salted_key", explode(sequence(lit(0), lit(explode_factor), lit(1))))
在Spark 2.4之前,您可以执行以下操作:
import org.apache.spark.sql.functions.{array, explode, lit}
val mySeq = List.range(0, explode_factor.toInt, 1).map(x=>lit(x))
val exploded_df = df.withColumn("salted_key", explode(array(mySeq:_*)))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.