如何为这种格式创建键值对?

时间:2014-11-03 22:49:21

标签: python scala bigdata apache-spark

所以我正在使用Spark RDD。我有一个标签分隔文件,格式如下

Actor1   Movie1
         Movie2
         Movie3

Actor2   Movie4
         Movie5
         Movie6

我想创建Key值对,其中key是actor,值是actor演员的电影。我怎么能用Scala或Python做到这一点?我能够读取文本文件并从选项卡中分割线条,例如以下内容,但我不知道如何形成键值对。

 lines = sc.textFile("file")
 tuples = lines.map(lambda x: x.split("\t"));
 # how do I create key value pairs???

2 个答案:

答案 0 :(得分:1)

你不能,或者至少不应该。火花的重点是可以并行处理不同的线;如果前两行在一个集群节点上运行,而后两行在另一个集群节点上运行,则第二个节点无法知道Movie3与Actor1一起运行。

您可以将mapPartitions与使用Iterator行的函数一起使用,并使用var来跟踪"当前"演员。如果您需要注意输入文本文件的拆分方式,则可能不会丢失任何数据。但我建议你找一个更好的输入格式。

答案 1 :(得分:1)

我也在尝试解决类似的问题..这个问题的结论是什么?有用吗?如何使用mapPartion解决这类问题?