【发布时间】:2019-04-24 07:54:45
【问题描述】:
我有这种形式的 RDD:
[[['a'],['b,c,d','e,f,g']],[['h'],['i,j,k','l,m,n']]]
我想要达到的目标:
[['a ,b,c,d', 'a ,e,f,g'], ['h ,i,j,k', 'h ,l,m,n']]
我做了什么:
def pass_row(line):
new_line = []
key = ''.join(line[0])
for el in line[1]:
el = key +' ,'+ el
new_line.append(el)
return new_line
rdd.map(pass_row)
它适用于较小的数据样本。但是,当我尝试在我的整个数据集上运行它时,我在for el in line[1]: 上得到了list index out of range...
基本上我有一个键(比如说['a']),用于['b,c,d','e,f,g'] 中的~100 组不同的值。我的最终目标是以行的形式将其作为 spark 数据框:
col1 col2 col3 col 4
a b c d
a e f g
h i j k
h l m n
感谢您的建议!
【问题讨论】:
-
显然你有一个记录,它有一个元素而不是两个。所以,
line[1]出现错误。
标签: python python-3.x pyspark rdd