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