![[Scala] Spark将RDD中某一列下的数组拆分成多列,第1张 [Scala] Spark将RDD中某一列下的数组拆分成多列,第1张](/aiimages/%5BScala%5D+Spark%E5%B0%86RDD%E4%B8%AD%E6%9F%90%E4%B8%80%E5%88%97%E4%B8%8B%E7%9A%84%E6%95%B0%E7%BB%84%E6%8B%86%E5%88%86%E6%88%90%E5%A4%9A%E5%88%97.png)
val data: RDD[String]
val data2 = data.map(x => {
val y = x.split("\|\|", -1)
y
})
val data3 = data2.toDF() data3.show(10) +--------------------+ | value| +--------------------+ |[66,................]| |[81,................]| |[82,................]| |[62,................]| |[83,................]|
准备将value这一列下数组中的元素拆开成列并显示
新的列按col_{1,2…}命名
import org.apache.spark.sql.functions.col
data3.select(
col("value") +:
(0 until COLUMNS_NAME.length - 1).map(i => {
col("value")(i).alias(s"col_$i")
}): _*
).show()
参考资料:
原文链接
https://www.it1352.com/1933758.html
原文内容如下
问题描述
我有一个Spark数据框,看起来像:
id DataArray
a array(3,2,1)
b array(4,2,1)
c array(8,6,1)
d array(8,2,4)
我想将此数据帧转换为:
id col1 col2 col3
a 3 2 1
b 4 2 1
c 8 6 1
d 8 2 4
我应该使用什么功能?
推荐答案
使用apply:
import org.apache.spark.sql.col
df.select(
col(“id”) +: (0 until 3).map(i => col(“DataArray”)(i).alias(s"col$i")): _*
)
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)