
Spark学习笔记
YF_Li123
生活需要奔跑
展开
-
Scala循环中的break和continue
一、停止循环方式一:使用returnfor ( i <- 1 to 10) { if (i == 5) { return // return终止循环并返回值,不建议在main方法中使用 } println(i)}方式二:使用Boolean类型变量实现// while 循环var flag = truevar n = 0while (flag) { println(n) n += 1 if (n == 6) { flag =.原创 2020-08-07 17:37:00 · 917 阅读 · 0 评论 -
spark SQL读取ORC文件从Driver启动到开始执行Task(或stage)间隔时间太长(计算Partition时间太长)且产出orc单个文件中stripe个数太多问题解决方案
具体请参考:https://blog.youkuaiyun.com/aijiudu/article/details/78616064补充:如果以上方式并不能大幅缩短时间,可确认下是否ORC文件个数过多,如果太多的话建议通过合并处理减少ORC文件个数,这样能大幅减少等待时间(可能跟spark读取ORC头文件信息有关,如果个数太多,时间肯定会长)...原创 2020-08-07 17:04:55 · 444 阅读 · 0 评论 -
Spark操作——行动操作(二)
集合标量行动操作 存储行动操作 存储行动操作 saveAsTextFile(path: String): Unit saveAsTextFile(path: String, codec: Class[_ <: CompresssionCodec]): Unit 将RDD以文本文件的格式保存到文件系统中,codec参数用于指定压缩类型 saveAsSequenceFile(path: String, codec: Option[Class[_ &...原创 2020-05-26 10:08:00 · 282 阅读 · 0 评论 -
Spark操作——行动操作(一)
集合标量行动操作 存储行动操作 集合标量行动操作 first(): T 返回RDD中的第一个元素,不进行排序 count(): Long 返回RDD中的元素个数 reduce(f:(T, T) => T): T 根据映射函数f,对元素进行二元计算 collect(): Array[T] 将RDD转换为数组 take(num: Int): Array[T] 获取RDD中下标从0—num-1的元素,不进行排序...原创 2020-05-23 22:29:52 · 878 阅读 · 0 评论 -
Spark操作——控制操作
cache(): RDD[T] persist(): RDD[T] persist(level: StorageLevel): RDD[T] cache和persist操作都是对RDD进行持久化,其中cache是persist采用MEMORY_ONLY存储级别时的一个特例,scala> var rdd = sc.textFile("/Users/lyf/Desktop/data.txt")rdd: org.apache.spark.rdd.RDD[String] =..原创 2020-05-23 16:05:17 · 271 阅读 · 0 评论 -
Spark学习笔记——转换操作(四)
基础转换操作 键值转换操作 键值转换操作 cogroup[W](other: RDD[(K, W)]): RDD[(K, (Iterable[V], Iterable[W]))] cogroup[W](other: RDD[(K, W)], numPartitions: Int): RDD[(K, (Iterable[V], Iterable[W]))] cogroup[W](other: RDD[(K, W)], partitioner: Partition...原创 2020-05-23 14:56:17 · 282 阅读 · 0 评论 -
Spark操作——转换操作(三)
基础转换操作 键值转换操作 键值转换操作 partitionBy(partitioner: Partitioner):RDD[(K,V)] 将原来的RDD根据给定的Partitioner函数进行重新分区。scala> val rdd = sc.makeRDD(Array((1,"A"),(2,"B"),(3,"C"),(4,"D")), 2)rdd: org.apache.spark.rdd.RDD[(Int, String)] = ParallelColle...原创 2020-05-23 10:47:54 · 526 阅读 · 0 评论 -
Spark操作——转换操作(二)
基础转换操作 键值转换操作 基础转换操作 mapPartitions[U](f:(Iterator[T]) => Iterator[U], preservesPartitioning: Boolean=false): RDD[U] mapPartitions操作和map操作类似,区别在于映射函数的参数由RDD中的每一个元素变成了RDD中的每一个分区的迭代器,可以理解为map操作中对RDD中的所有元素应用映射函数,mapPartitions操作是对RDD中每个分...原创 2020-05-15 18:48:54 · 487 阅读 · 0 评论 -
Spark操作——转换操作(一)
基础转换操作 键值转换操作 基础转换操作 map[U](f:(T)=>U):RDD[U] 对RDD中的每个元素都应用一个指定的函数,以此产生一个新的RDDscala> var rdd = sc.textFile("/Users/lyf/Desktop/test/data1.txt")rdd: org.apache.spark.rdd.RDD[String] = /Users/lyf/Desktop/test/data1.txt MapPartitions...原创 2020-05-15 16:59:35 · 778 阅读 · 0 评论 -
Spark操作——创建操作
并行化创建操作 外部存储创建操作 并行化创建操作 parallelize[T](seq: Seq[T], numSlices: Int=defaultParallelism):RDD[T] # 并行化操作1到10数据集,根据能启动的Executor数据来进行切分多个分区,每个分区启动一个任务来进行处理scala> var rdd = sc.parallelize(1 to 10)rdd: org.apache.spark.rdd.RDD[Int] = Par...原创 2020-05-15 16:51:45 · 398 阅读 · 0 评论