spark
青龙悟空
goooooooooooooooooooo
展开
-
Spark经典案例之求平均值,最大最小值,求top值,非结构数据处理,统计每天新增用户数
1、需求分析对输入文件中数据进行就算学生平均成绩。输入文件中的每行内容均为一个学生的姓名和他相应的成绩,如果有多门学科,则每门学科为一个文件。要求在输出中每行有两个间隔的数据,其中,第一个代表学生的姓名,第二个代表其平均成绩。2、原始数据1)math:张三,88李四,99王五,66赵六,772)china:张三,78李四,89王五,96赵六,673)english:张三,80李四,82王五,84赵六,86样本输出:张三,82李四,90王五,82赵六,76原创 2020-12-29 11:03:07 · 1510 阅读 · 0 评论 -
spark 在互联网的应用
美团是数据驱动的互联网服务,用户每天在美团上的点击、浏览、下单支付行为都会产生海量的日志,这些日志数据将被汇总处理、分析、挖掘与学习,为美团的各种推荐、搜索系统甚至公司战略目标制定提供数据支持。大数据处理渗透到了美团各业务线的各种应用场景,选择合适、高效的数据处理引擎能够大大提高数据生产的效率,进而间接或直接提升相关团队的工作效率。美团最初的数据处理以Hive SQL为主,底层计算引擎为MapReduce,部分相对复杂的业务会由工程师编写MapReduce程序实现。随着业务的发展,单纯的Hive SQL原创 2020-12-28 16:42:56 · 173 阅读 · 0 评论 -
spark 编程流程及案例
第一步、数据的读取(输入)将要处理的数据读取封装到一个集合RDD中(类比与Scala中List列表)val inputRDD = sc.textFile("…”)第二步、数据处理(分析)调用集合RDD中函数(高阶函数)进行处理分析RDD ->函数 ->另外一个RDD :transformation函数val outpuRDD = inputRDD.#(#:基本就是List中函数)比如:map\flatMap\filter\reducebyKey第三步、数据的输出(原创 2020-12-28 16:09:13 · 661 阅读 · 0 评论 -
简单的Spark案例——top2课程
需求:如下图的文件中有很多访问记录,第一列表示访问站点的时间戳,第二列表示访问的站点,中间用制表符分割。这里相当于学习的不同课程,如java,ui,bigdata,android,h5等,其中每门课程又分为子课程,如h5课程分为teacher,course等。现在需要统计每门课程,学习量最高的两门子课程并降序排列。 package com.whua import java.net.URL import org.apache.spark.rdd.RDD imp.原创 2020-12-28 15:52:43 · 265 阅读 · 0 评论 -
spark to函数
scala> "astron".toto toBuffer toDouble toInt toList toMap toShort toTraversable toArray toByte toFloat toIterable toLong toSeq toStream toUpperCase toBoolean toCharArray ...原创 2020-12-24 09:33:26 · 779 阅读 · 0 评论 -
Spark | 分组排序
记录下Spark分组排序时遇到的问题,需求问题如下:当前有HDFS文件数据内容为:(字段顺序为手机号-phone、用户ID-userId、线路-line、时间戳-clientTimestamp),然后读取HDFS文件内容生成rdd,其中rdd的格式为( (phone,userId,line)) 130xxxxxxxx&1980098385910287364&1004&1568528894 130xxxxxxxx&2233727976012209153&原创 2020-12-24 09:33:52 · 1191 阅读 · 0 评论 -
spark 累加 累计次数 累计求和
import org.apache.spark.SparkConfimport org.apache.spark.SparkContextobject Scala { def main(args: Array[String]): Unit = { /** * 累加求和 */ val conf=new SparkConf().setAppName("test").setMaster("local") val sc=new SparkContext(conf...原创 2020-12-22 15:46:59 · 796 阅读 · 0 评论 -
spark 内存溢出
直接collect ,如果数据量大,也会出现内存溢出mappartitions 如果数据大,也会出现内存溢出1.map过程产生大量对象导致内存溢出这种溢出的原因是单个map中产生了大量的对象导致的例如:rdd.map(x=>for(i<-1 to 10000) yield i.tostring)这个操作在rdd中,每个对象产生了10000个对象,肯定很容易产生内存溢出,针对这种问题,在不增加内存下,通过减少每个task的大小,以便达到每个task 即使产生大量...原创 2020-12-22 15:08:15 · 454 阅读 · 0 评论 -
一文学会 spark 算子
Transfomation算子Transfomation算子 描述 map 返回一个新的RDD,该RDD由每一个输入元素经过func函数转换后组成.就是讲传进去的Rdd的每个元素转换成新的元素 mapPartitions(func) 类似于map,但独立地在RDD的每一个分片上运行,因此在类型为T的RDD上运行时,func的函数类型必须是Iterator[T] => Iterator[U]。假设有N个元素,有M个分区,那么map的函数的将被调用N次,而mapPartiti原创 2020-12-22 14:48:16 · 79 阅读 · 0 评论 -
Spark rdd 及算子 flatMapValues
1、创建一个RDD变量,通过help函数,查看相关函数定义和例子: >>> a = sc.parallelize([(1,2),(3,4),(5,6)]) >>> a ParallelCollectionRDD[21] at parallelize at PythonRDD.scala:475 >>> help(a.map) RDD是什么? RDD是Spark中的抽象数据结构类型,任何数据在Spark中都原创 2020-12-22 14:40:55 · 650 阅读 · 0 评论 -
Spark中实现分组取TOP N (Scala版本)
1、源数据如下,取出每班成绩的前三名class1 98class2 90class2 92class1 96class1 100class2 89class2 68class1 81class2 902、实现过程package Basicimport org.apache.spark.{SparkConf, SparkContext}/** * Created by tg on 10/25/16. */object GroupTopn { def main(ar...原创 2020-12-21 15:06:13 · 509 阅读 · 0 评论 -
spark分组求topN
目录1. 将数据加载到内存中去TopN将数据加载到内存和本地中去取TopN使用自定义分区器取TopN保存中间结果数据取TopN使用TreeSet取TopN使用TreeSet取TopN方式二在mr、hive中投处理过的操作,分组的topn 比如要从10个文件,每个文件都有100w个数字,找出最大的10数字。 比如有很多部分,比如研发部、设计部、市场部、行政部等等,要求找出每个部分年龄最小的三个小姐姐。 这就是分组TopN的问题。object ...原创 2020-12-20 23:24:27 · 488 阅读 · 0 评论 -
Spark求平均值
//求平均 方法一: groupByKey textFile.mapToPair(line -> new Tuple2<>(line.split(" ")[0], Integer.parseInt(line.split(" ")[1]))) .groupByKey() .mapToPair(info -> { double sum = 0; ...原创 2020-12-20 23:24:10 · 1372 阅读 · 1 评论 -
Spark中的map、flatMap、mapToPair
目录mapToPairsspark的RDD操作spark的flatMapflatMap很显然每一行都按照空格拆分成了三行,因此总行数是拆分前的三倍,第一行的内容只剩下原第一行的第一个数据,时间。这样flatMap的作用就很明显了spark的mapmapToPairsscala版本scala是没有mapToPair函数的,scala版本只需要map就可以了,只有Java才有!!!!!scala> val lines = sc.textFile("/spark.原创 2020-12-20 23:23:55 · 775 阅读 · 0 评论 -
spark 计算出每个科目最受欢迎的/点击率最高的前两位老师的视频
action算子案例实操计算出每个科目最受欢迎的/点击率最高的前两位老师的视频1 数据准备 http://javaee.bilibili.com/laoyang http://javaee.bilibili.com/laoyang http://php.bilibili.com/laoli http://php.bilibili.com/laoliu http://php.bilibili.com/laoli http://php.bi...原创 2020-12-20 23:23:13 · 219 阅读 · 0 评论 -
SparkRDD的Action算子
RDD 的 Action 算子Action :行动算子,调用行动算子会触发job执行,本质上是调用了sc.runJob方法,该方法从最后一个RDD,根据其依赖关系 ,从后往前 ,划分 Stage ,生成 TaskSet .二 对RDD的操作(创建,查看)1 创建RDD的方法1.1 通过并行化方法 ,将 Driver端的集合转成 RDD将Driver端的scala集合并行化成RDD,RDD中并没有真正要计算的数据,只是记录以后从集合中的哪些位置获取数据val...原创 2020-12-20 23:23:31 · 370 阅读 · 0 评论