簡體   English   中英

Apache Spark 最便宜的觸發 RDD 轉換的方法

[英]Apache Spark cheapest way to trigger a RDD transformation

我是 Apache Spark 的新手,我已經建立了一個獨立的集群來運行大量數據(整數)的排序算法。

我讓它按照我想要的方式工作。 核心如下:

JavaRDD<Integer> rdd = ctx
                .parallelize(Collections.<Integer>emptyList(), PARTITIONS)
                .mapPartitions(partition ->
                        ThreadLocalRandom
                                .current()
                                .ints(NUMBERS_PER_PARTITION, Integer.MIN_VALUE, Integer.MAX_VALUE)
                                .boxed()

                                .parallel()
                                .collect(Collectors.toList()))
                .sortBy(x -> x, true, PARTITIONS);

這將在集群中生成隨機數,然后對它們進行排序。

問題是我對實驗的排序時間感興趣,但 Spark 是懶惰的,排序只會被給定的動作觸發。 我使用count()來觸發排序,但是完成計數需要很長時間,因此它延遲了我的實驗。 我不在乎得到排序的數字,甚至是它的樣本,因為我已經知道它正在正確排序。

有沒有一種方法可以觸發.sortBy()而不必等待觸發它的操作完成? 如果沒有,是否有比count()更便宜的操作?

sort 是一個懶惰的火花轉換
您可以使用非惰性返回值之一來觸發操作
您已經嘗試過需要花費大量時間的計數
嘗試: first() 或 take(n)

這是惰性/非惰性操作的列表

https://www.mapr.com/ebooks/spark/apache-spark-cheat-sheet.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM