Spark算子[05]:parallelize,makeRDD,textFile

来源:互联网 发布:淘宝代销上架编辑技巧 编辑:程序博客网 时间:2024/05/27 12:20

parallelize

scala版本:
第一个参数:本地scala Seq集合;
第二个参数:numSlices partition的数量;
返回:RDD[T]

/** Distribute a local Scala collection to form an RDD.*/def parallelize[T: ClassTag](seq: Seq[T],numSlices: Int = defaultParallelism): RDD[T] = withScope {}
scala> sc.parallelize(List(1,2,3))

scala版本:
第一个参数:只能接收List的集合,之后转为scala集合;
第二个参数:numSlices partition的数量;
【Typically you want 2-4 partitions for each CPU in your cluster. 】
【官网建议:每个CPU分2-4个partitions】
返回:JavaRDD[T]

/** Distribute a local Scala collection to form an RDD. */def parallelize[T](list: java.util.List[T], numSlices: Int): JavaRDD[T] = {    implicit val ctag: ClassTag[T] = fakeClassTag    sc.parallelize(list.asScala, numSlices)}
List<Integer> num = Arrays.asList(1, 2, 4, 5, 7, 8);JavaRDD<Integer> numRdd = sc.parallelize(num);

makeRDD

scala版本的才有makeRDD,底层调用parallelize(seq, numSlices)实现;

def makeRDD[T: ClassTag](seq: Seq[T],numSlices: Int = defaultParallelism): RDD[T] = withScope { parallelize(seq, numSlices)}

textFile

textFile,输入支持在目录、压缩文件和通配符。
例如,您可以使用textFile(“/my/directory”)、textFile(“/my/directory/*. txt”)和textFile(“/my/directory/*. gz”)。

scala版本

scala> val lines = sc.textFile("/spark.txt",4)

java版本

JavaRDD<String> lines = sc.textFile("C:\\test\\spark.txt",2);

支持模式匹配

JavaRDD<String> lines = sc.textFile("C:\\test\\*.txt");

支持文件目录

JavaRDD<String> lines = sc.textFile("C:\\test");

支持多个路径,可以使用逗号分隔

JavaRDD<String> lines = sc.textFile("C:\\test,C:\\test1",3);
原创粉丝点击