- 博客(65)
- 资源 (31)
- 收藏
- 关注
原创 Spark的join聚合操作
使用场景:join必须作用于 RDD[K,V] 类型的数据,相当于SQL中的内关联join,只返回两个RDD根据K可以关联上的结果在类型为(K,V)和(K,W)类型的数据集上调用时,返回一个相同key对应的所有元素对在一起的(K, (V, W))数据集,只返回根据key可以关联上的数据,关联不上的, 直接舍去了示例:[K,V] join[K,W] 返回值类型[K,(V,W)]...
2020-01-07 18:51:31
367
原创 Spark中两个可以改变分区的算子:repartition coalesce
两个可以改变分区的算子举例: repartition(10) = coalesce(10,true)参数: shuffle: 数据是否重新分发。 简单理解: 一个分区的数据是否会被分配到多个分区中。repartition: 重新分区 ,数据必须要进行shuffle。coalesce: 常用于 减少分区 ,合并分区。 数据不会进行shuffle。如何使用:...
2020-01-07 16:36:06
767
原创 Spark实现列转行------求平均温度案例
import org.apache.spark.{SparkConf, SparkContext}object MySparkUtil { //获取本地的SparkContext def apply(appName: String): SparkContext = { val conf = new SparkConf() .setAppName(appName)...
2020-01-07 16:24:14
1837
原创 Spark之WordCount 在本地模式下运行
在本地模式下运行,必须设置 Master AppNamelocal模式下,不会有监控界面出现:object WordCountLocal { def main(args: Array[String]): Unit = { if (args.length != 2) { println( """ |cn.uhome.spark...
2020-01-07 15:07:29
416
1
原创 Spark之WordCount,提交到集群中运行
在idea中写好程序,提交到集群中运行object WordCount { def main(args: Array[String]): Unit = { if (args.length != 2) { println( """ |cn.uhome.spark01.WordCount <input> <output...
2020-01-07 15:05:16
187
翻译 设计模式之禅:单例模式
单例模式(Singleton Pattern)是一个比较简单的模式,其定义如下:Ensure a class has only one instance, and provide a global point of access to it.(确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。)单例模式的通用类图:Singleton类称为单例类,通过使用private...
2020-01-07 11:22:45
167
原创 稀疏 sparsearray 数组-----编写五子棋程序中,存盘退出和续上盘的功能
import scala.collection.mutable.ArrayBuffer/** * 稀疏 sparsearray 数组 * 编写的五子棋程序中,有存盘退出和续上盘的功能。 * 分析问题: * 因为该二维数组的很多值是默认值 0, 因此记录了很多没有意义的数据.->稀疏数组 * * 基本介绍 * 当一个数组中大部分元素为0,或者为同一个值的数组时...
2019-04-30 01:00:42
302
原创 SpringBoot集成kafka以及遇到的问题
版本介绍:Springboot:1.5.3kafka:kafka_2.10-0.10.2.1配置文件:server.port=6097spring.application.name=DsInfoservice#============== kafka ===================kafka.consumer.zookeeper.connect=192.168.x...
2019-01-28 20:57:21
4485
3
原创 Spark 从 Kafka 读数并发问题
经常使用 Apache Spark 从 Kafka 读数的同学肯定会遇到这样的问题:某些 Spark 分区已经处理完数据了,另一部分分区还在处理数据,从而导致这个批次的作业总消耗时间变长;甚至导致 Spark 作业无法及时消费 Kafka 中的数据。为了简便起见,本文讨论的 Spark Direct 方式读取 Kafka 中的数据,这种情况下 Spark RDD 中分区和 Kafka...
2018-12-24 01:05:03
419
原创 大数据项目实战之调优思路
session聚合统计之重构实现思路session聚合统计(统计出访问时长和访问步长,各个区间的session数量占总session数量的比例)的传统思路:1、actionRDD,映射成<sessionid,Row>的格式2、按sessionid聚合,计算出每个session的访问时长和访问步长,生成一个新的RDD3、遍历新生成的RDD,将每个session的访问时长和访问...
2018-12-22 21:06:00
495
原创 大数据项目实战之十五:15.session聚合统计之自定义Accumulator
Accumulator传统的实现方式,有如下缺点:1.在写后面的累加代码的时候,比如找到了一个4s~6s的区间的session,但是在代码里面不小心累加到7s~9s里面去了;2.当后期项目出现一些逻辑上的变更,比如说,session数量的计算逻辑,要改变,就得更改所有Accumulator对应的代码;或者说,又要增加几个范围,那么又要增加多个Accumulator,并且修改对应的累加代码;...
2018-12-21 01:28:44
263
原创 全局topN问题
import org.apache.spark.{SparkConf, SparkContext}object FavTeacher { def main(args: Array[String]): Unit = { val conf = new SparkConf() .setAppName("FavTeacher") .setMaster("local...
2018-12-14 00:25:05
301
原创 hive实现累计报表详解
业务场景:有如下访客每次金额统计表 t_access_times 访客 月份 金额 A 2015-01 5 A 2015-01 15 B 2015-01 ...
2018-12-14 00:13:36
1381
2
原创 Spark性能调优:调节并行度
并行度:其实就是Spark作业中,各个stage的task数量,也就代表了Spark作业的在各个阶段(stage)的并行度。如果不调节并行度,导致并行度过低,会怎么样?假设,现在已经在spark-submit脚本里面,给我们的spark作业分配了足够多的资源,比如50个executor,每个executor有10G内存,每个executor有3个cpu core。基本已经达到了集群或者...
2018-12-09 21:47:09
190
原创 Spark性能调优:如何分配更多资源
性能调优的王道,就是增加和分配更多的资源,性能和速度上的提升,是显而易见的;基本上,在一定范围之内,增加资源与性能的提升,是成正比的;写完了一个复杂的spark作业之后,进行性能调优的时候,首先第一步,就是要来调节最优的资源配置;在这个基础之上,如果说你的spark作业,能够分配的资源达到了你的能力范围的顶端之后,无法再分配更多的资源了,公司资源有限;那么才是考虑去做其他的调优工作。...
2018-12-09 20:53:15
391
原创 RDD分区概述
1.RDD是一个基本的抽象,操作RDD就像操作一个本地集合一样,降低了编程的复杂度RDD里面并不存储真正要计算的数据,你对RDD进行操作,他会在Driver端转换成task,下发到Executor计算分散在多台集群上的数据RDD的算子分为两类,一类是Transformation(lazy),一类是Action(触发任务执行)RDD不存真正要计算的数据,而是记录了RDD的转换关系(调用了什么...
2018-12-07 00:56:55
2095
原创 大数据项目实战之十四:14.按筛选参数对session粒度聚合数据进行过滤
import com.alibaba.fastjson.JSONObject;import com.ibeifeng.sparkproject.conf.ConfigurationManager;import com.ibeifeng.sparkproject.constant.Constants;import com.ibeifeng.sparkproject.dao.ITaskDAO;...
2018-12-06 23:39:20
245
原创 Hadoop中需要哪些配置文件,其作用是什么
1)core-site.xml:(1)fs.defaultFS:hdfs://cluster1(域名),这里的值指的是默认的HDFS路径 。(2)hadoop.tmp.dir:/export/data/hadoop_tmp,这里的路径默认是NameNode、DataNode、secondaryNamenode等存放数据的公共目录。用户也可以自己单独指定这三类节点的目录。(3)ha.zo...
2018-12-04 22:30:47
5844
原创 正常工作的Hadoop集群中Hadoop都分别需要启动哪些进程,它们的作用分别是什么?
1)NameNode它是hadoop中的主服务器,管理文件系统名称空间和对集群中存储的文件的访问,保存有metadate。2)SecondaryNameNode它不是namenode的冗余守护进程,而是提供周期检查点和清理任务。帮助NN合并editslog,减少NN启动时间。3)DataNode它负责管理连接到节点的存储(一个集群中可以有多个节点)。每个存储数据的节点运行一个datanod...
2018-12-04 22:28:57
19293
原创 Spark入门之JavaLambdaWordCount
import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaPairRDD;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.api.java.JavaSparkContext;import scala.Tuple2;imp...
2018-12-04 15:07:47
246
原创 Spark入门之Java实现WordCount
import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaPairRDD;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.api.java.JavaSparkContext;import org.apache.spark.a...
2018-12-04 13:45:38
479
原创 Scala入门案例---Wordcount
import org.apache.spark.rdd.RDDimport org.apache.spark.{SparkConf, SparkContext}object ScalaWordCount { def main(args: Array[String]): Unit = { if (args.size != 2) { println( ...
2018-12-04 01:29:03
465
原创 Yarn和Spark的StandAlone调度模式的对比
Yarn和Spark的StandAlone调度模式的对比:MapReduce中的maptask和reducetask都是在YarnChild中进行计算的,YarnChild是一个进程,使用jps命令可以看到1.yarn中的ResourceManager和Spark中的master作用:都是管理子节点,资源调度,接收任务请求2.yarn中的nodemanager和spark中的worker:管...
2018-12-02 00:25:14
2136
原创 大数据项目实战之十三:13.Spark上下文构建以及模拟数据生成
import com.ibeifeng.sparkproject.conf.ConfigurationManager;import com.ibeifeng.sparkproject.constant.Constants;import com.ibeifeng.sparkproject.util.MockData;import org.apache.spark.SparkConf;...
2018-12-01 22:51:19
620
原创 大数据项目实战之十二:12.JSON数据格式讲解以及fastjson介绍
什么是JSON?就是一种数据格式;比如说,我们现在规定,有一个txt文本文件,用来存放一个班级的成绩;这个文本文件里的学生成绩的格式,是第一行,就是一行列头(姓名 班级 年级 科目 成绩),接下来,每一行就是一个学生的成绩。那么,这个文本文件内的这种信息存放的格式,其实就是一种数据格式。学生 班级 年级 科目 成绩张三 一班 大一 高数 90李四 二班 大一 高数 80对应到JSO...
2018-12-01 11:57:18
301
原创 大数据项目实战之十一:11.工厂模式讲解以及DAOFactory开发
如果没有工厂模式,可能会出现的问题:ITaskDAO接口和TaskDAOImpl实现类;实现类是可能会更换的;那么,如果你就使用普通的方式来创建DAO,比如ITaskDAO taskDAO = new TaskDAOImpl(),那么后续,如果你的TaskDAO的实现类变更了,那么你就必须在你的程序中,所有出现过TaskDAOImpl的地方,去更换掉这个实现类。这是非常非常麻烦的。如果说,...
2018-12-01 11:40:48
456
原创 Spark任务执行过程简介
--executor-memory 每一个executor使用的内存大小--total-executor-cores 整个application使用的核数1.提交一个spark程序到spark集群,会产生哪些进程? SparkSubmit(也叫做Driver),主要作用是提交任务,也可以调度任务 Executor 用于执行需要计算的任务 2.在提交spa...
2018-12-01 01:48:41
801
原创 大数据项目实战之十:10.DAO模式讲解以及TaskDAO开发
Data Access Object:数据访问对象首先,你的应用程序,肯定会有业务逻辑的代码。在三层架构的web系统中,业务逻辑的代码,就是在你的Service组件里面;在我们的spark作业中,业务逻辑代码就是在我们的spark作业里面。如果说,你不用DAO模式的话,那么所有的数据库访问的代码和逻辑会全部耦合在业务逻辑代码里面。比如,你的业务逻辑代码中,可能会充斥着JDBCHelper,...
2018-11-30 18:13:55
272
原创 Intellij IDEA 常用快捷键
Intellij IDEA 自动生成 serialVersionUIDSetting->Inspections->Serialization issues->Serializable class without ’serialVersionUID’ 选上以后,在你的class中:Alt+Enter就会提示自动创建serialVersionUID了。Intellij I...
2018-11-30 17:48:13
231
原创 大数据项目实战之九:9.JavaBean概念讲解
JavaBean:类JavaBean,虽然就是一个类,但是是有特殊条件的一个类,不是所有的类都可以叫做JavaBean的首先,它需要有一些field,这些field,都必须用private来修饰,表示所有的field,都是私有化的,不能随意的获取和设置其次,需要给所有的field,都提供对应的setter和getter方法,什么叫setter和getter?setter,就是说setX...
2018-11-30 17:13:42
214
原创 大数据项目实战之八:8.JDBC组件开发
/** * JDBC辅助组件 * 在正式的项目的代码编写过程中,是完全严格按照大公司的coding标准来的 * 也就是说,在代码中,是不能出现任何hard code(硬编码)的字符 * 比如“张三”、“com.mysql.jdbc.Driver” * 所有这些东西,都需要通过常量来封装和使用 */public class JDBCHelper { // 第一步:在静态代码块...
2018-11-30 16:37:42
185
原创 内部类以及匿名内部类
外部类: 最普通的,我们平时见到的那种类,就是在一个后缀为.java的文件中,直接定义的类,比如public class Student { private String name; private int age;}内部类:顾名思义,就是包含在外部类中的类,就叫做内部类。内部类有两种,一种是静态内部类,一种是非静态内部类。public class School { ...
2018-11-29 15:37:04
260
1
原创 数据库连接池原理
1.每一次java程序要在MySQL中执行一条SQL语句,那么就必须建立一个Connection对象,代表了与MySQL数据库的连接。然后在通过连接发送了你要执行的SQL语句之后,就会调用Connection.close()来关闭和销毁与数据库的连接。为什么要立即关闭呢?因为数据库的连接是一种很重的资源,代表了网络连接、IO等资源。所以如果不使用的话,就需要尽早关闭,以避免资源浪费。2.劣势/...
2018-11-29 15:31:54
189
1
原创 单例设计模式
单例模式是指的什么意思? 我们自己定义的类,其实默认情况下,都是可以让外界的代码随意创建任意多个实例的 但是有些时候,我们不希望外界来随意创建实例,而只是希望一个类,在整个程序运行期间,只有一个实例,任何外界代码,都不能随意创建实例 那么,要实现单例模式,有几个要点: 1、如果不想让外界可以随意创建实例,那么类的构造方法就必须用private修饰,必须是私有的 2、既然类的...
2018-11-29 15:30:55
124
原创 大数据项目实战之七:7.JDBC原理
1.Java程序/J2EE程序,当需要操作数据库,通常就是对数据库中某一个,或者某些表,进行增删改查那么就需要通过某些方式连接到数据库,比如MySQL,执行各种SQL语句(insert、select、udpate)2.JDBC,Java Database Connectivity,Java数据库连接技术。JDBC,其实只是代表了JDK提供的一套面向数据库的一套开发接口,注意,这里大部分...
2018-11-29 14:58:51
166
转载 Scala条件控制与循环
if表达式 ·if表达式的定义:在Scala中,if表达式是有值的,就是if或者else中最后一行语句返回的值。 ·例如,val age = 30; if (age > 18) 1 else 0 ·可以将if表达式赋予一个变量,例如,val isAdult = if (age > 18) 1 else 0 ·另外一种写法,var...
2018-11-29 00:01:36
190
转载 kafka一键启动/停止脚本
kafka 版本 kafka_2.11-0.10.2.1 因为kafka没有批量启动脚本,每次都需要在各个broker节点上启动kafka服务。比较麻烦。 这里自定义一个kafka启动的脚本:#!/bin/bash BROKERS="hdp-01 hdp-02 hdp-03" KAFKA_HOME="/root/apps/kafka_2.11-0.10.2.1" ...
2018-11-29 00:01:24
1028
原创 一不下心踩的坑
java.net.URISyntaxException: Relative path in absolute URI在传入参数的时候,第一个参数和第二个参数之间应该是空格,而我直接用的回车,从而导致了这个问题 如图所示,看着像是回车,其实两者之间是空格隔开的...
2018-11-29 00:01:08
158
1
原创 大数据项目实战之六:6.工具类编写和说明
日期时间工具类import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;/** * 日期时间工具类 * @author Administrator * */public class DateUtils { public static final SimpleDat...
2018-11-29 00:00:51
210
转载 Scala默认参数和带名参数
默认参数 在Scala中,有时我们调用某些函数时,不希望给出参数的具体值,而希望使用参数自身默认的值,此时就定义在定义函数时使用默认参数。 def sayHello(firstName: String, middleName: String = "William", lastName: String = "Croft") = firstName + " " + middl...
2018-11-28 00:11:37
430
【蓉荣】Flink在数据湖场景下的使用.pdf
2019-12-13
【06 计算平台 巴真】Flink-构建下一代大数据处理引擎.pdf
2019-12-03
面试 大数据 算法解析
2019-05-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人