所以我正在使用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???
答案 0 :(得分:1)
你不能,或者至少不应该。火花的重点是可以并行处理不同的线;如果前两行在一个集群节点上运行,而后两行在另一个集群节点上运行,则第二个节点无法知道Movie3与Actor1一起运行。
您可以将mapPartitions
与使用Iterator
行的函数一起使用,并使用var
来跟踪"当前"演员。如果您需要注意输入文本文件的拆分方式,则可能不会丢失任何数据。但我建议你找一个更好的输入格式。
答案 1 :(得分:1)
我也在尝试解决类似的问题..这个问题的结论是什么?有用吗?如何使用mapPartion解决这类问题?