栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

[Scala] Spark将RDD中某一列下的数组拆分成多列

[Scala] Spark将RDD中某一列下的数组拆分成多列

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")): _*
)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/674082.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号