9 spark入門之取樣、蒐集部分結果sample、takeOrdered
阿新 • • 發佈:2019-02-04
spark提供了對結果集RDD進行隨機取樣,即獲取一小部分資料的功能。其中有sample、takeSample、takeOrdered等方法。
import org.apache.spark.api.java.JavaRDD; import org.apache.spark.api.java.JavaSparkContext; import org.apache.spark.sql.SparkSession; import java.util.List; /** * 取樣 * @author wuweifeng wrote on 2018/4/24. */ public class TestSample { public static void main(String[] args) { SparkSession sparkSession = SparkSession.builder().appName("JavaWordCount").master("local").getOrCreate(); JavaSparkContext javaSparkContext = new JavaSparkContext(sparkSession.sparkContext()); JavaRDD<String> javaRDD = javaSparkContext.textFile("/users/wuwf/age"); //取10%的資料,隨機數種子自己設定,也可以不設定 JavaRDD<String> sample = javaRDD.sample(false, 0.1, 1234); long sampleDataSize = sample.count(); long rawDataSize = javaRDD.count(); System.out.println(rawDataSize + " and after the sampling: " + sampleDataSize); //取指定數量的隨機資料 List<String> list = javaRDD.takeSample(false, 10); System.out.println(list); //取排序好的指定數量的資料 List<String> orderList = javaRDD.takeOrdered(10); System.out.println(orderList); } }