我有一个像这样的简单csv,但它有100万条记录:
Name, Age
Waldo, 5
Emily, 7
John, 4
Amy Johns, 2
Kevin, 4
...
我想找一个名字叫#Amy Johns"的人。我有一个10台机器的火花簇。假设rdd包含csv的RDD,我怎样才能利用集群以便我能够......
我的代码现在正好:rdd = sc.textFile
然后它执行rdd.foreach( // checks if field is "Amy Johns", if so, then exits)
。
我遇到的问题是rdd包含所有记录(如果不是这样,请说出来)所以我不认为正在分发工作。 此外,我不知道如何完成/停止工作一次" Amy Johns"找到了。
答案 0 :(得分:0)
凭借其定义,您的RDD确实包含所有记录。您可以将RDD拆分为多个分区,以增加计算的并行化。此外,在分区之后,您可以在RDD上应用转换以根据某些条件过滤元素。
你可能想尝试这样的事情:
val myRDD = sc.textFile(_inputPath_, 10)
val filteredRDD = myRDD.filter(line => line.split(",")(0).equals("Amy Johns"))
filteredRDD.first.foreach(println)