繁体   English   中英

如何将数组列附加到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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM