- 博客(36)
- 收藏
- 关注
原创 maven遇到项目编译不通过,缺少类class not found ,但是maven依赖不报错
maven遇到项目编译不通过,缺少类class not found ,但是maven依赖不报错最近项目导入遇到个问题,项目导入后,编译代码,发现有个类没有找到,但是maven的依赖没有报错。一直查找问题,缺少的jar报,发现缺少的依赖jar包,缺少没有下载下来,通过第三方下载后,编译还是缺少类,下载引入的jar没有起作用。百度问题在项目目录下,使用 mvn -X dependency:treeD:\code\qjzh-code\panoramiccontrol>mvn -X dependency
2021-03-18 22:04:26
886
1
原创 StackOverflowError 和 OutOfMemoryError
StackOverflowErrorJava线程操作是基于栈的,当调用方法内部方法也就是进行一次递归的时候就会把当前方法压入栈直到方法内部的方法执行完全之后,就会返回上一个方法,也就是出栈操作执行上一个方法。public class StackOverFlowErrorTest { public static void main(String[] args) { getint(); } private static int getint(){
2021-03-15 18:12:46
195
原创 快速排序
直接上代码public class QuickSortTest2 { public static void main(String[] args) { int[] arr = {14, 34, 5, 32, 5, 6, 7, 67, 8, 93, 8, 67, 12}; System.out.println(Arrays.toString(arr)); quickSort(arr, 0, arr.length - 1); System
2021-03-15 13:07:54
135
原创 spark 3.0 部分学习笔记一
1.spark 和mapreduce 最大的区别就是:spark 基于内存,任务之间通信快mapreduce 基于磁盘,io交互读取慢,任务之间的通信慢1.Spark安装分为:Local(本地模式),Standalon(Spark独立集群模式),Yarn模式2.Standalon模式 和 Yarn模式区别:Standalon有自己独立的Master 和 Worker节点作为资源管理Yarn模式使用Yarn中的ResourceManager 和 NodeManager进行资源管理3.端口号:M
2021-03-05 18:09:53
194
2
原创 数据库表设计三范式
什么是范式当一个关系中的所有分类都是不可再分的数据项时,该关系是规范化的。不可再分的数据项,即不存在组合数据项和多项数据项。一个低一级的关系模式,通过模式分解可以转换为若干高一级范式的关系模式的集合,这个过程就叫规范化。二维数据表可以分为5级范式为1NF、2NF、3NF、4NF、5NF。第一范式满足最低的要求条件,第五范式满足最高要求的条件。第一范式条件:必须不包含重复组的关系,即每一列都是不可拆分的原子项。如以下表存在可再分项(高级职称),所以不满足第一范式非规范化转换为规范化的第一范式方法很简单
2021-03-02 17:32:16
573
原创 flume入门使用
Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统。Flume基于流式架构,灵活简单。流式和非流式:流式,处理数据单位很小,mapreduce 处理的文件大,不是流式架构优点:1.可以和任意进程集成2.具有缓冲的能力,输入缓冲,写入hdfs中,减小hdfs的压力3.flume中的事务基于channel,使用了两个事务模型(sender + receiver),确保消息被可靠发送。Flume使用两个独立的事务分别负责从soucrce到channel
2021-02-26 17:48:37
193
原创 数仓之拉链表实现原理
一、拉链表是什么?数仓建立过程中,在有些情况下,为了保持历史的一些状态,需要用拉链表来做,这样做目的在可以保留所有状态的情况下可以节省空间。拉链表,是记录每条记录的生命周期,通常记录中需要一个状态变化来展示,如果一个状态结束,那么就重新开始一条记录所以,拉链表原始记录需要:1.记录需要有 状态变化2.记录需要有创建时间和操作时间拉链表需要新增两个字段:状态开始时间和状态结束时间二、适用范围拉链表适用于,数据会发生变化,但是大部分是不变的(实际是以运算换取存储空间)拉链表反应的是数据的变化
2021-02-22 17:06:55
4135
原创 快速排序算法实现
一、什么是快速排序算法思想快速排序的基本思想:通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。二、代码实现scala 代码实现def quickSort(list: List[Int]): List[Int] = list match { case head :: tail => val (left, right) = tail.partition(_ < head)
2021-02-20 17:30:16
138
原创 SparkStreaming使用之DStream
SparkStreaming使用之DStream文章目录SparkStreaming使用之DStream前言一、SparkStreaming是什么?二、DStream是什么?前言概念:实时数据处理 和 离线数据处理的区别:在于数据处理延迟的长短:实时是毫秒级别,离线数据处理则是小时或者天批量数据处理与流式处理方式的区别:侧重点在于 :数据的处理方式,批量则是一批次处理,流式则是来一个处理一个一、SparkStreaming是什么?SparkStreaming 是Spark 中用于处理实时计
2021-02-07 12:49:40
250
原创 SparkSQL之加载与保存数据
SparkSQL之加载与保存数据文章目录前言一、使用步骤1.加载数据2.保存数据3.读取mysql和写入myslq4.Spark连接hive数据库前言sparkSQL可以加载与保存各种类型的数据一、使用步骤1.加载数据spark.read.load 是sparkSQL默认加载数据的方式,默认是加载parquet文件,但是可以通过spark.sql.sources.default 修改spark.read.format("…")[.option("…")].load("…"),通用数据加载
2021-02-04 22:08:39
799
原创 Spark SQL之UTF和UTAF
Spark SQL之UTF和UTAF文章目录Spark SQL之UTF和UTAF一、UTF 和 UTAF二、UTF三、 UTAF弱类型强类型一、UTF 和 UTAFUTF:UserDefindFunctionUTAF:UserDefindAggregateFunctionUTF和UTAF都是用户自定义SQL函数二、UTFsparkSession.udf.register("addName",(name:String)=>{ "addName:"+name })s
2021-02-03 21:04:34
462
原创 Spark SQL 初入只 DataFrame 和 DataSet
DataFrame 和 DataSet 是Spark SQL两大分布式数据结构,是学习Spark SQL 必不可少的内容Spark SQL的发展Spark SQL前身是Shark,Shark则是使用Hive的结构,把底层计算逻辑换成SparkCore而已,然后需要依赖于Hive的发展,2014年提出,把SparkSQL独立出来 以及提供Hive On SparkSpark 1.0 RDD出现Spark 1.4 DataFrame出现Spark 1.6 DataSet 出现在之后的Spark发展中
2021-02-03 09:08:54
202
原创 Spark shuffle(读写过程)
Spark shuffle过程解析,在Spark执行过程中,StageScheduler 负责阶段stage的划分,然后把每一个stage打包成TaskSetManager传给TaskScheduler,但是一个阶段执行完毕后,再传下一个stage,这里需要涉及到上游stage 写数据,下游数据读数据,这里就是shuffle过程,有上游的ShuffleMapStage写数据历史shuffle演变过程1.每个task写一份文件,下游的task从这份文件中查找数据,这样查找时间长2.每个task根据下
2021-02-02 13:25:31
365
1
原创 Spark Task级调度及黑名单和失败重试
Spark 在执行用户app程序时,执行Driver时会存在TaskScheduler 任务调度器属性,这个属性在伴随Driver的执行就会初始化,在StageScheduler 中 submitTask任务时,把任务提交给TaskScheduler中TaskScheduler:Driver中的task任务调度器在Driver执行过程中,DAGScheduler将划分的阶段Stage提交给TaskScheduler 后,TaskScheduler 将Stage 按照最后一个RDD的分区数量来划分成ta
2021-02-01 20:28:11
799
原创 Spark用户application执行之阶段划分
Spark在Yarncluster环境运行,在ApplicationMaster在某一个NodeManager上运行后,并所有的Excetor启动后并向Driver注册成功后,Spark开始运行用户程序,Driver 运行后包括了SparkContext准备,DAGScheduler,TaskScheduler等执行,首先就是先执行DAGScheduler任务阶段划分DAGSchedulerDAGScheduler:Spark任务划分阶段Stage管理器,也就是我们称的有向无环图在Driver初始化S
2021-02-01 19:58:15
168
原创 Spark内核源码流程之Yarn cluster提交运行流程
当sparksubmit提交模式为Yarn Cluster模式时的启动流程1.通过submit 在本地机器上启动submit 提交job JVM进程2.submit中会判断是否是cluster环境,是,通过反射执行YarnClusterApplication 的main方法2.YarnClusterApplication 会启动yarn ResourceManager client,连接yarn RM3.连接成功后,会发送指令,在指定的NM上启动ApplicationMaster JVM 进程,A
2021-01-29 11:34:52
377
原创 关于Scala中的控制抽象,遇到的问题,op : =>Unit 和op : ()=>Unit的区别
问题描述:今天需要写一段Spark中的需求代码,在抽取特质的时候,需要把一段代码传到def 函数中,于是用到了scala中的控制抽象,在使用传参中用到了op : ()=> Unit,出现了不执行的情况具体代码:trait中部分代码:def start(master:String="local[*]")(name:String="application")(op : ()=>Unit): Unit ={ val sparkConf=new SparkConf().setMaster(m
2021-01-27 17:18:27
618
原创 页面转化率统计分析及简单实现
文章目录一、需求分析二、代码实现一、需求分析页面转化率?当前页面–>访问下一个页面的次数 / 访问当前页面的总次数思路如下:1.访问是基于页面访问session来统计,每个session都是一次系统访问2.统计需要统计的每个页面访问的总次数(分母)3.分子统计:3.1.按照每个session分组,访问页面时间排序,获取访问页面的顺序列表3.2.使用sliding 或是zip来连起来,获取前一个页面与后一个页面的访问连接3.3.过滤掉非统计的访问页面3.4.聚合所有页面连接访问
2021-01-25 22:54:24
1077
原创 需求二:top 10热度中每个品类点击该品类中总次数的top10 session
文章目录一、top 10热度中每个品类点击该品类中总次数的top10 session二、代码实现一、top 10热度中每个品类点击该品类中总次数的top10 session需求分析:在有品类热度前10的基础上,统计每个品类点击次数前10的session和每个session点击该品类的次数。二、代码实现伪代码:1.获取前10品类2.过滤非点击和非前10品类3.每个品类每个session聚合点击次数4.分品类聚合,每个session和其点击次数5.每个品类取前10代码如下(示例):o
2021-01-25 16:24:20
133
原创 Spark练习离线计算,从用户日志中统计各个品类热度top10
Spark练习各个品来热度前10文章目录一、需求和资源准备二、实现方式1.最简单实现2.把第一种方案优化3.把第二种方案优化4.使用共享只写变量实现一、需求和资源准备提供的日志格式:2019-07-17_95_26070e87-1ad7-49a3-8fb3-cc741facaddf_37_2019-07-17 00:00:02_手机_-1_-1_null_null_null_null_32019-07-17_95_26070e87-1ad7-49a3-8fb3-cc741facaddf_48_
2021-01-25 12:52:56
618
原创 Spark中广播变量(broadcast)使用
文章目录前言一、使用介绍二、broadcast原理前言 在spark中,有一些数据需要传入到每个Excetor中每个task任务中,假如一个Excetor中有10个分区的task,那么每个分区都得需要一份Driver中传入的数据,那么会导致一个Excetor中有大量的重复的数据,spark中存在一种变量broadcast,广播变量,该变量只会往执行任务的执行的Excetor中发送一份变量,这样会大大减少每个EXcetor中的重复的数据一、使用介绍object Broadcast { d
2021-01-23 10:56:31
3390
原创 Spark中累加器(Accumulator)使用
累加器用来把 Executor 端变量信息聚合到 Driver 端。在 Driver 程序中定义的变量,在Executor 端的每个 Task 都会得到这个变量的一份新的副本,每个 task 更新这些副本的值后,传回 Driver 端进行 merge。累加器全称:分布式共享只写变量分布式:由于Excetor是多个,那么累加器也会复制成多份进行计算共享:每个Excetor单独使用自己的accumulator,只写:每个Excetor只能写自己单独的accumulator如果是单独的变量,而不是累
2021-01-22 17:25:35
1256
原创 Spark RDD缓存中cache,persist 和checkPoint的区别
Spark RDD缓存中cache,persist 和checkPoint的区别文章目录一、cache,persist和checkPoint是什么?二、不同点1.cache,persist2.checkPoint总结一、cache,persist和checkPoint是什么?cache,persist和checkPoint都是Spark任务执行过程中,缓存RDD产生的数据,避免分区执行发生错误,全部RDD再按照血缘关系再重复执行所有RDD逻辑,而直接从缓存中获取某一段RDD逻辑执行产生的数据二
2021-01-22 09:56:41
447
原创 Spark DAG有向无环图任务划分
1.DAG有向无环图DAG(Directed Acyclic Graph)有向无环图是由点和线组成的拓扑图形,该图形具有方向,不会闭环。例如,DAG记录了RDD的转换过程和任务的阶段。2)RDD任务切分中间分为:Application、Job、Stage和Task(1)Application:初始化一个SparkContext即生成一个Application;(2)Job:一个Action算子就会生成一个Job;(3)Stage:Stage等于宽依赖的个数加1;(4)Task:一个Stage阶段
2021-01-21 17:38:18
603
1
原创 redis中使用set更新一个有有效时间的key,会使有效时间变成永久有效
最近在开发中遇到一个问题,使用redis中的set更新一个含有有效时间的key时,会时这个key的有效时间变成永久有效用客户端尝试:127.0.0.1:6379> set test testOK127.0.0.1:6379> expire test 1000(integer) 1127.0.0.1:6379> set test testOK127.0.0.1:6379> ttl test(integer) -1127.0.0.1:6379>查阅redis
2021-01-21 10:29:05
2202
原创 Spark中的血缘关系与依赖
RDD会把之前的依赖关系记录下来,防止在RDD的某一个阶段执行过程中出现问题后,部分分区数据丢失后,无法恢复数据,这是RDD另一个弹性属性,在数据出现问题,重新恢复数据每一个RDD会把它之前的血缘关系记录下来,可以用 rdd.toDebugString 来获取他所有的血缘关系val fileRDD: RDD[String] = sc.makeRDD(List("scala","Spark","Spark","scala","hello")) println(fileRDD.toDebugStri
2021-01-21 10:21:41
1397
原创 Spark中RDD算子reduce,aggregate,fold与reduceByKey,aggregateByKey,foldByKey的区别
这几个算子主要分为两类:行动算子:reduce,aggregate,fold转化算子:reduceByKey,aggregateByKey,foldByKey行动算子与转化算子的区别:行动算子会执行Spark作业执行,而转化算子只是计算逻辑的封装/** * Run a function on a given set of partitions in an RDD and pass the results to the given * handler function. This is
2021-01-20 17:26:21
590
1
原创 Spark的RDD中key-value类型RDD处理函数reduceByKey,aggregateByKey,foldBykey和combineByKey理解
reduceByKey:让相同的key进行分区内聚合,让相同key分区间聚合,这里涉及到了分区内预聚合,所以与groupByKey区别在于,groupByKey中shuffle过程数据量不会操作,shuffle落盘文件,相同操作reduceByKey的性能要优于groupByKeydef reduceByKey(func: (V, V) => V): RDD[(K, V)] = self.withScope { reduceByKey(defaultPartitioner(self), f
2021-01-20 11:40:43
321
原创 Spark RDD中的coalesce缩减分区和repartition扩大分区
Spark RDD中的coalesce缩减分区和repartition扩大分区RDD是Spark中重要数据结构,在日常使用如果我们的分区内数量量很小,但是分区数量过大,这会导致Spark的task任务变多,加大资源的使用,另外,如果数据量过大,但是分区数少,excetor执行的任务少,但是每个task任务大,执行的耗时会提高,于是我们考虑一个合适的task任务来取适中的task。通常我们会用coalesce 来缩减分区,用repartiton来扩大分区coalesce源码如下:def coalesc
2021-01-19 09:25:52
1245
原创 Spark 部分笔记一
1.Spark安装分为:Local(本地模式),Standalon(Spark独立集群模式),Yarn模式2.Standalon模式 和 Yarn模式区别:Standalon有自己独立的Master 和 Worker节点作为资源管理Yarn模式使用Yarn中的ResourceManager 和 NodeManager进行资源管理3.端口号:Master 内部通信端口号:7077Spark-shell 运行端口号:4040Standalon 模式下,WEB-UI端口号:8080
2021-01-17 15:22:18
86
原创 Spark中RDD数据结构的理解
Spark在国内的大量普及,越来越多人学习Spark技术,作为Spark Core中最重要的数据结构RDD,是学习Spark重点之一RDD(Resilient Distributed Datasets,弹性分布式数据集),是Spark最为核心的概念,自然也是理解Apache Spark 工作原理的最佳入口之一。分布式数据集:顾名思义,可以把数据分配到不同的节点上,但是在spark中,分布式数据集则是封装了计算逻辑的概念其特点如下:➢ 弹性⚫ 存储的弹性:内存与磁盘的自动切换;⚫ 容错的弹
2021-01-14 09:02:36
440
原创 hive sql 中使用 if 语句
hive sql 中使用 if 语句hive 是数仓管理中重要的一环,尤其是sql的书写时大家在执行任务时中最重要的,关系到任务的执行快慢和正确性今天就来看一下hive中的sql 的使用 案例:insert into table ads_sale_tm_category1_stat_mnselect mn.sku_tm_id, mn.sku_category1_id, mn.sku_category1_name, sum(if(mn.order_count>
2020-11-30 17:29:47
8448
1
原创 使用dom4j 生成document文档,写入xml文件时,产生中文乱码
使用dom4j 生成document文档,写入xml文件时,产生中文乱码**背景:在本地测试的时候生成xml文档,没有问题,编码也是utf-8,但是在windos sever 2008 测试服务器上时,生成的xml文档编码却是系统自带的编码ASCII。但是把测试服务器上的xml文件拿出来使用notepad++打开却是utf-8的编码,然后使用edit plus打开是ASCII。很奇怪上代码:...
2019-05-23 12:02:52
556
原创 解压压缩文件后,删除不了原压缩包
项目需求需要解压一个压缩文件,获取数据并保存成压缩文件,后删除原压缩文件,解压后发现怎么删除也删除不了原压缩包。于是百度了,发现ZipFIle中有close(),于是百度了一波,原来ZipFile类需要close()上代码public static void unZipFiles(File zipFile, String descDir)throws IOException {File ...
2019-04-28 16:35:21
3658
1
原创 springboot使用@value获取不了配置文件中的内容
springboot中使用@Value注解,在工具类中获取不了配置的内容,显示为null在使用springboot开发是新手,之前都是ssm整合使用的,最近换到新公司,使用springboot.在我需要调用制作证书的接口,接口路径放在配置文件中,我的工具类制作证书过程中,@Value获取不了配置文件中的证书制作接口路径,做了很多尝试,都显示为null.困扰了一两个小时,第二天上午,突然想起工...
2019-01-19 22:26:05
1490
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人