spark dataframe:如何分解 IntegerType 列
spark dataframe: how to explode a IntegerType column
val schema = StructType(Array(StructField("id", IntegerType, false),StructField("num", IntegerType, false)))
我想通过每个id生成从0到num的连续数字。
我不知道该怎么做..
谢谢
data and result here !!!
尝试 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, _)))
您可以使用 UDF
和 explode
功能:
import org.apache.spark.sql.functions.{udf, explode}
val range = udf((i: Int) => (0 to i).toArray)
df.withColumn("num", explode(range($"num")))
val schema = StructType(Array(StructField("id", IntegerType, false),StructField("num", IntegerType, false)))
我想通过每个id生成从0到num的连续数字。 我不知道该怎么做.. 谢谢
data and result here !!!
尝试 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, _)))
您可以使用 UDF
和 explode
功能:
import org.apache.spark.sql.functions.{udf, explode}
val range = udf((i: Int) => (0 to i).toArray)
df.withColumn("num", explode(range($"num")))