注意:这个问题与Spark使用Python(Python)有关,而不仅仅是普通的Python。它使用RDD对象,而不仅仅是简单的Python列表。
所以,我有一个演员名单和他们的演员电影。我想创建键值对,其中key是actor,值是他工作的电影。数据格式使得您有一个actor标签与他工作的电影分开。如果他在更多的电影中工作,例如,在 Abalov Eduard 的情况下,额外的电影列在它下面的行中。我已经以下面显示的格式从文件中提取了数据。但是,我希望演员名称能够出现在他工作的所有电影中,这样我就可以调用一个map函数来创建键值对。因此,例如,对于Abalov Eduard,我希望他的名字出现在他的所有电影中。例如,而不是
[u'', u'', u'', u'Severnaya rapsodiya (1974)']
我想要
[u'Abalov, Eduard', u'Severnaya rapsodiya (1974)']
我该怎么做?我需要使用mappartitions
吗?或者有更简单的方法来实现这一目标吗?
[
[u'Abalos, Rogelio', u'', u'Sa pagitan ng dalawang mata (1963) <22>'],
[u''],
[u'Abalos, Ronald A.', u'Alchemy (2013) [Group Member] <21>'],
[u''],
[u'Abalos, Tarzan', u'', u'Bagong buwan (2001) [MILF Group] <82>'],
[u''],
[u'Abalov, Eduard', u'', u'Chistye prudy (1965) (as E. Abalov)'],
[u'', u'', u'', u'Novye priklyucheniya neulovimykh (1968) (as E. Abalov)'],
[u'', u'', u'', u'Severnaya rapsodiya (1974)'],
[u'', u'', u'', u'Stoyanka poyezda - 2 minuty (1972) (TV)'],
[u'', u'', u'', u'Stryapukha (1965) (as E. Abalov)'],
[u'', u'', u'', u'"12 stulev" (1977) (as E. Abalov)'],
[u''],
[u'Abalyan, I.', u'', u'Ne delayte biskvity v plokhom nastroenii (2003)']
]
答案 0 :(得分:0)
actordata = [[u'.....' ]]
clean_data = []
last_actor = None
for item in actordata:
if len(item) < 1: # ignore the [u'']
continue
last_actor = item[0] if item[0] != u'' else last_actor
clean_data.append([last_actor, item[-1]] )