如何在spark

时间:2018-04-26 14:23:42

标签: scala apache-spark dataframe rdd

我有一个特殊的要求,如下所示对数据进行非规范化:

来源数据框:Key, item_desc

目标数据框:Key, item_desc1, item_desc2, item_desc3, item_desc4

对于源数据帧中的每4条记录,我应该在目标数据帧上创建一条记录。

源数据:

Key, item_desc
1, desc1
1, desc2
1, desc3
1, desc4
1, desc5
1, desc6

目标数据:

key, item_desc1, item_desc2, item_desc3, item_desc4
1, desc1, desc2, desc3, desc4
1, desc5, desc6

任何人都可以指导我如何编写此代码吗? 我已经在scala上做了一个示例代码,如下所示:

var l = (1 to 102).toList
var n = ""
var j = 1
for (i <- l){
n = n + l(j) + ","
if (j%4 == 0) {
println(n)
n = ""
}
if (j+1 == l.size) println(n)
j = j+1
}

但是,我应该将此逻辑应用于dataframe / rdd / list。

请帮助我!

1 个答案:

答案 0 :(得分:1)

您可以尝试这样的事情:

vbSystemModal

但是除非与单个键相关联的值的数量很小,否则它不会很好地缩放,因此使用风险自负。