spark集中取数方式的区别
RDD 的一些行动操作会以普通集合或者值的形式将 RDD 的部分或全部数据返回驱动器程
序中。
把数据返回驱动器程序中最简单、最常见的操作是 collect(),它会将整个 RDD 的内容返
回。
collect() 通常在单元测试中使用,因为此时 RDD 的整个内容不会很大,collect() 要求所有数据都必须能一同放入单台机器的内存中。take(n) 返回 RDD 中的 n 个元素,并且尝试只访问尽量少的分区,因此该操作会得到一个
不均衡的集合。需要注意的是,这些操作返回元素的顺序与你预期的可能不一样。这些操作对于单元测试和快速调试都很有用,但是在处理大规模数据时会遇到瓶颈。
如果为数据定义了顺序,就可以使用 top() 从 RDD 中获取前几个元素。top() 会使用数据
的默认顺序,但我们也可以提供自己的比较函数,来提取前几个元素。有时需要在驱动器程序中对我们的数据进行采样。takeSample(withReplacement, num,
seed) 函数可以让我们从数据中获取一个采样,并指定是否替换。有时我们会对 RDD 中的所有元素应用一个行动操作,但是不把任何结果返回到驱动器程
序中,这也是有用的。比如可以用 JSON 格式把数据发送到一个网络服务器上,或者把数
据存到数据库中。不论哪种情况,都可以使用 foreach() 行动操作来对 RDD 中的每个元素进行操作,而不需要把 RDD 发回本地。