如何格式化这样的数据?
问题描述:
注意:这个问题与使用Python(Python)的Spark相关,而不仅仅是普通的Python。它使用RDD对象而不仅仅是简单的Python列表。如何格式化这样的数据?
所以,我有一个演员和他们的铸造电影列表。我想创建关键值对,其中关键是演员,值是他工作的电影。数据格式是这样的,你有一个演员选项卡与他工作的电影分开。例如,如果他在更多电影中工作,例如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)']
]
答
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]])
+0
在简单的Python中,这将工作,但我使用Spark(Pyspark)。 – MetallicPriest 2014-11-04 17:54:25
只要保持一个额外的变量,看到的最后演员的名字。如果新列表中没有演员,请添加它。您可以更新您的现有列表,或者在建立您的字典时进行。 – tdelaney 2014-11-04 17:43:50
我使用Pyspark的火花,而不是普通的蟒蛇。我正在研究RDD对象,而不是普通列表。 – MetallicPriest 2014-11-04 17:53:27