2017-04-13 59 views

回答

2

您可以使用UDFexplode功能:

import org.apache.spark.sql.functions.{udf, explode} 

val range = udf((i: Int) => (0 to i).toArray) 
df.withColumn("num", explode(range($"num"))) 
+0

非常感謝 – Liangpi

0

嘗試DataFrame.explode

df.explode(col("id"), col("num")) {case row: Row => 
    val id = row(0).asInstanceOf[Int] 
    val num = row(1).asInstanceOf[Int] 
    (0 to num).map((id, _)) 
} 

還是在RDD土地,你可以使用flatmap這個:

df.rdd.flatMap(x => (0 to x._2).map((x._1, _))) 
+0

非常感謝 – Liangpi