- 博客(55)
- 收藏
- 关注
原创 hive中的高阶函数:with cube函数,Grouping sets函数,With rollup函数
1.应用背景:实际生产中,各种指标的报表统计,往往都会涉及到多维分析,比如,统计日活数,日会话次数,日回头访客数,日新,日用户平均访问时长,访问深度……都需要从不同维度,各种角度去分析,如果上述维度分析需求,都逐个开发计算sql(逐个去group by聚合),工作繁冗!那么,如何解决这个问题呢?2.实现过程:2.1 关键要点:创建一个统一的目标维度分析聚合结果表,这个表应该包含所有的维度字段 利用hive的高阶聚合函数,在一个sql中,即可计算出所有可能的维度组合2.2 C..
2020-12-19 21:11:26
3608
1
原创 hive中lpad:左填充函数,rpad:有填充函数,conv:将十进制转为二进制函数
1. lpad:按照指定的字符,向左补齐指定的位数例如:select lpad('20',10,'0'); 结果为:0000000020第一个参数:你要补齐的字段值第二个参数:补齐之后总共的位数第三个参数:你要在左边填充的字符2.rpad:按照指定的字符,向右补齐例如:select rpad('20',10,'0'); 结果为:2000000000第一个参数:你要补齐的字段值第二个参数:补齐之后总共的位数第三个参数:你要在右边填充的字符3.c...
2020-12-19 20:38:23
9840
1
原创 maven中如何解决jar包的依赖冲突Caused by:java.lang.NoSuchMethodError Caused by: java.lang.ClassNotFoundException
产生jar包依赖冲突的原因:假如在一个项目中,如项目demo中,我们即引入了aaa.jar又引入了bbb.jar,但是这两个jar包同时又引入了传递依赖xxx.jar,不同的是aaa.jar和bbb.jar这两个依赖中的xxx.jar的版本不同,这样就有可能产生依赖冲突,当我们的代码要使用xxx.jar中的方法时,就有可能产生依赖冲突:比如xxx.jar1.0版本中没有a方法,而xxx.jar2.0版本中有a方法,这样当在执行代码的时候,有可能只有一个类加载到jvm中(有可能是xxx1.0版本也有可能是
2020-12-13 21:20:09
1566
1
原创 linux中shell脚本定时任务 crontab的使用方法
linux shell脚本 定时任务 每三秒一次1.shell脚本1.1 创建shell脚本1.vim seconds.sh在脚本中输入以下内容#!/bin/bashfor((i=1;i<=20;i++));doecho "num "${i}/home/somedir/scripts.sh 2>/dev/null &sleep 3done2. 给当前脚本增加读写权限chmod u+x ./seconds.sh2.Linux定时器操作1. 编辑.
2020-12-12 21:31:07
478
原创 Spark3.0的新特性
1. 新特性一:动态分区裁剪比如上面的 SQL 查询,假设 t2 表 t2.id < 2 过滤出来的数据比较少,但是由于之前版本的 Spark 无法进行动态计算代价,所以可能会导致 t1 表扫描出大量无效的数据。有了动态分区裁减,可以在运行的时候过滤掉 t1 表无用的数据优化之后:经过这个优化,查询扫描的数据大大减少,性能提升了 33 倍2. 新特性二:自适应优化查询比如下面的查询,基于代价的模型优化不可能准确的评估而有了 AQE 之后,Spark 就可以.
2020-12-11 17:11:13
1716
1
原创 RDD、DataFrame、DataSet这三者的联系和区别
三者的区别和联系:RDD是一个抽象的数据数据集(描述信息)DataFrame, Spark 1.x 是一个抽象的数据数据集,有描述信息(从哪里读取数据,怎么计算) + Schema信息字段的描述信息DataSet在Spark1.6出现的,在Spark2.0将DataFrame和DataSet的的API进行了统一DataSet是一个更正聪明,智能的RDD(有执行计划的RDD),被优化过的RDD,DataSet也有Schema,还有一个EncoderDataFrame是DataSet的一种
2020-12-11 16:34:18
391
原创 SQL的三种执行方式
第一种:逐行执行,SQL就是调用select,然后在select中传函数(UFD输入一行返回一行),对于RDD,就是调用底层new MapPartitionsRDD,不论是SQL还是RDD都不需要shuffle第二种:分组执行: select gender, avg(age), count(*) from tb_student group by gender SQL就是调用Select,必须要求Select的字段要么在聚合函数里面SUM(meney),要么在group by...
2020-12-11 16:31:43
1745
1
原创 hive-sql金典面试题分别用sql,spark-sql(DSL),Spark-rdd形式实现
1.案例一需求:求同一个用户连续登录三天及以上的用户1.1 数据准备guid01,2018-03-01guid01,2018-02-28guid01,2018-03-01guid01,2018-03-04guid01,2018-03-02guid01,2018-03-05guid01,2018-03-06guid01,2018-03-07guid02,2018-03-01guid02,2018-03-02guid02,2018-03-03guid02,2018-03-06
2020-12-10 00:07:25
407
原创 Spark-Core之Spark on standAlone 模式的执行过程详解
1.Spark on standAlone 模式(Client)1.1 执行流程图1.2 执行过程详解:0.当需要提交一个任务到spark集群中时,spark-submit脚本会执行一个叫SparkSubmit的类,然后通过反射调用 我们设置的参数 -- class中的main方法,然后在main方法中new SparkContext1. 将提交的信息发送给Master2. master根据提交的applicatition的资源信息,先根据内存过滤出符合条件的Work...
2020-12-09 00:57:58
363
原创 Spark-Core之Spark运行模式StandAlone模式和Yarn模式详解
1. spark运行在standAlond模式:1.1 standAlone的client模式:(driver运行在sparkSubmit进程中)1.2 运行的流程:1. 客户端向master提交任务2. master根据客户端提交的任务,计算那些worker符合执行任务的条件,找到符合执行条件的worker然后和worker 进行RPC通信,通知worker启动executor,并且会将一些driver端的信息告诉给executor,executor启动之后会想driver端反向注册
2020-12-05 20:09:18
1039
原创 Spark-Core性能调优之用Spark实现KRYO序列化
1.实现kryo序列化的目的:为了降低driver端,到executor之间网络传输压力,可以使用spark自带的,kryo序列化方式,而不使用java的序列化,kryo序列化不仅可以节约内存空间,在网络传输上也可以节省网络资源,java的序列方式,不仅占用较大的内存空间,而且网络传输也比较慢.2.官方文档为我们提供的序列化优化方式Data SerializationSerialization plays an important role in the performance of an
2020-12-04 21:20:29
296
原创 SSH免密配置-集群中的免密配置
1.生成密钥ssh-keygen2.生成免密链接ssh-copy-id + 要配置的主机名例如:ssh-copy-id node-1注意:配置免密配置要和自己也免密配对一下3.远程链接sssh + 用户名4. 远程复制scp 本地文件+主机名:路径...
2020-12-02 22:39:29
131
原创 Spark-Core分组求TOPN的六种不同的实现方式
案例:计算学科最受欢迎老师TopN1.需求:根据网站的行为日志,统计每个学科最受欢迎老师的TopN,即按照学科分组,在每一个组内进行排序2. 样例数据:http://bigdata.51doit.cn/laozhanghttp://bigdata.51doit.cn/laozhanghttp://bigdata.51doit.cn/laozhaohttp://bigdata.51doit.cn/laozhaohttp://bigdata.51doit.cn/laozhaoh
2020-12-02 15:10:55
577
1
原创 Spark-Core结合商品订单案例理解RDD中算子的用法
1.需求:在给定的订单数据,根据订单的分类ID进行聚合,然后按照订单分类名称,统计出某一天商品各个分类的成交金额,然后在结合商品分类表匹配上对应的商品分类字段,然后将计算结果保存到mysql中,要求结果如图所示:2.数据样例{"cid": 1, "money": 600.0, "longitude":116.397128,"latitude":39.916527,"oid":"o123", }"oid":"o112", "cid": 3, "money": 200.0, "longit
2020-12-01 21:24:22
344
原创 Spark-Core之源码级算子详解(二)
1.keys算子理解:只能针对对偶元组使用,keys这个方法是定义在PariPDDfunction中,只有Rdd中装的是对偶元组才能将rdd转换为PariRDDFunction(隐式转换)一般我们经常使用的reduceBykey或者是groupBykey 这种带有Bykey操作的算子都是先将RDD(对偶元组)通过隐式转换为PariRDDFunction 才能调用算子keys算子底层 调用的是map方法,是对rdd中的每一个分区调用map方法2.values算子理解:只能针对对偶元组使用,valu.
2020-11-29 22:31:13
250
原创 Spark-Core中那些你不知道的面试题
1.Application使用SparkSubmit提交的个计算应用,一个Application中可以触发一到多次Action,触发一次Action形成一个DAG,一个DAG对应一个Job,一个Application中可以有一到多个Job2.JobDriver向Executor提交的作业,触发一次Acition形成一个完整的DAG,一个DAG对应一个Job,一个Job中有一到多个Stage,一个Stage对应一个TaskSet,一个TaskSet中有一到多个Task3.DAG概念:有向无
2020-11-29 11:41:45
264
原创 Spark-Core之RDD的概述以及算子详解
一、RDD概述 1、什么是RDD RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变、可分区、里面的元素可并行计算的集合。RDD具有数据流模型的特点:自动容错、位置感知性调度和可伸缩性。RDD允许用户在执行多个查询时显式地将工作集缓存在内存中,后续的查询能够重用工作集,这极大地提升了查询速度。 2、RDD属性 (1)、一组分片(Partition),即数据集的基...
2020-11-29 00:20:53
333
原创 Spark-Core之源码级算子详解(三)
0.intersection求交集功能:是对两个rdd或者两个集合,求共同的部分,比如第一个rdd中有的数据并且第二个rdd中也有的数据,取出相同的元素(会去重)底层:底层调用的cogroup,map将数据本身当成key,null当成value,然后进行过滤,过滤的条件为,两个迭代器都不为空迭代器,然后调用keys取出key def intersection(other: RDD[T]): RDD[T] = withScope { this.map(v => (v, null))
2020-11-29 00:11:40
301
转载 Hive分析窗口函数
Hive分析窗口函数一数据准备cookie1,2015-04-10,1cookie1,2015-04-11,5cookie1,2015-04-12,7cookie1,2015-04-13,3cookie1,2015-04-14,2cookie1,2015-04-15,4cookie1,2015-04-16,4创建数据库及表create database if not exists cookie;use cookie;drop table if exists cook.
2020-11-23 21:51:32
179
转载 Spark-Core中RDD详细介绍
RDD ---弹性分布式数据集 RDD概述 RDD论文 中文版 : http://spark.apachecn.org/paper/zh/spark-rdd.html RDD产生背景 为了解决开发人员能在大规模的集群中以一种容错的方式进行内存计算,提出了 RDD 的概念,而当前的很多框架对迭代式算法场景与交互性数据挖掘场景的处理性能非常差, 这个是RDDs 的提出的动机。 什么是 RDD ...
2020-11-20 23:16:11
195
原创 Redis入门详解及redis的常用基本数据结构
1.redis是什么:Redis是一个非常流行的基于内存的轻量级键值数据库,Redis是一个高性能的kv对(键值)缓存和内存NoSql数据库2.redis的应用场景1) 用来做缓存--redis的所有的数据都是放在内存中(内存数据库)2) 可以用于实现简单的队列系统3) 在离线批处理数据中,可以作为外部字典的知识库,来实现分布式计算过程中的外部数据查询可以在某些特定应用场景下替代传统数据库解决一些特定需求——比如社交类的应用(共同好友,使用了某项功能的人数统计)——sess
2020-11-19 22:55:04
337
转载 ClickHouse函数整理(详细)
1、日期类函数 1.1 时间或日期截取函数(to)—— 返回非日期 函数用途举例结果toYear()取日期或时间日期的年份toYear(toDateTime(‘2018-12-11 11:12:13’)) toYear(toDate(‘2018-12-11’))返回 2018 返...
2020-11-18 22:03:29
4515
转载 实战:消息中间件,解耦、异步、削峰,到底该如何使用
实战:消息中间件,解耦、异步、削峰,到底该如何使用: 消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。 目前使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ。消息中间件到底该如何使用,何时使用这是一个问题,胡乱地使用消息中间件增加了系统的
2020-11-16 18:01:14
1739
转载 【hive 日期函数】Hive常用日期函数整理
1、to_date:日期时间转日期函数 select to_date('2015-04-02 13:34:12');输出:2015-04-0212 2、from_unixtime:转化unix时间戳到当前时区的时间格式 select from_unixtim...
2020-11-15 20:45:07
2340
转载 hive sql语句转换成mapreduce
hive sql语句转换成mapreduce 孩子加油孩子 2017-04-28 11:33:52 ...
2020-11-14 22:49:13
392
原创 kafka核心架构详解
1.什么是kafkaKafka是一个分布式消息中间件,支持分区的、多副本的、多订阅者的、基于zookeeper协调的分布式消息系统。通俗来说: kafka就是一个存储系统,存储的数据形式为“消息”;它的主要作用类似于蓄水池,起到一个缓冲作用;2.什么是消息队列常见的消息队列有activemq ,rabbitmq, rocketmq;消息队列常用于两个系统之间的数据传递;分布式消息传递基于可靠的消息队列,在客户端应用和消息系统之间异步传递消息。有两种主要的消息传递模式:点对点传
2020-11-14 21:39:48
749
原创 java中使用Gson将JSON格式的字符串转为map集合
应用场景:在生产中我们经常会遇到json格式的字符串,但是只需要其中的几个字段对应的值,所以不需要繁琐的javaBean来封装数据,方便对json格式中的key和value取值 try { Gson gson = new Gson(); Map<String, Object> rtMap = gson.fromJson(json,new TypeToken<Map<String,Object>>() {}.getType());
2020-11-11 16:42:30
929
原创 flume的核心架构,flume 中的核心概念,flume的操作步骤以及flume中的事务控制是如何设计
1. flume是什么flume是一种日志收集或数据采集工具,可以从各种各样的数据源(服务器)采集数据传输(汇聚)到大数据生态的各种存储系统中(hdfs,hbase,kafka)等2. flume的工作原理是什么:flume是一种日志收集和数据采集的工具,将flume部署在日志服务器上,将日志文件通过source从日志服务器上读取文件,然后写入到channel中,然后sink在从channel中读取数据,写入到hdfs文件系统中3. flume的核心架构flume中的核心是由一个个age
2020-11-09 21:31:26
906
原创 scala案例:平均温度案例和用户表和用户订单表的join案例
1. 平均温度案例:1.1 需求:求出各个地区的平均温度1.2 代码实现:package com.zxx.fuxiday05object AvgTemp { def main(args: Array[String]): Unit = { //数据 val d1 = Array(("beijing", 28.1), ("shanghai", 28.7), ("guangzhou", 32.0), ("shenzhen", 33.1)) val d2 = Arra
2020-11-08 23:30:42
373
原创 scala隐式类,隐式函数,隐式变量详解
1.scala隐式的作用:使用implicit 修饰的内容是隐式内容, 隐式的特点就是遇到适应的类型会自动的应用1.1 sacal隐式的意义:使得静态类型动态化 为现有类库添加功能 隐式的代理增强一个类或者一个方法1.2scala隐式的分类:隐式变量隐式参数隐式类2. 隐式变量:定义:隐式值也叫隐式变量,将某个形参变量标记为implicit,所以编译器会在方法 省略隐式参数的情况下去搜索作用域内的隐式值作为缺省参数隐式变量的定义方法:object.
2020-11-08 13:39:31
718
原创 Clickhouse中的各种类型的表引擎详解,Log家族类引擎和MergeTree 家族类引擎详解
1.日志引擎具有最小功能的轻量级引擎。当您需要快速写入许多小表(最多约100万行)并在以后整体读取它们时,该类型的引擎是最有效的。1.1日志引擎的共同属性为:数据存储在磁盘上; 写数据都是以追加的方式往文件里写数据; 有支持并发数据访问的锁:在INSERT查询期间,表被锁定,并且其他用于读取和写入数据的查询都等待表解锁。如果没有数据写入查询,那么可以同时执行任意数量的数据读取查询; 不支持索引:这句话的意思是,select查询的数据范围效率不是很高 不要原子性的写数据:如果某些操作中断了
2020-11-06 18:46:03
1197
1
原创 ClickHouse的特征,性能,优点,缺点,应用场景以及什么是OLAP,Clickhouse的相关优化
1.什么是clickhouse:提供了sql结构化的查询语言; clickhouse是一款分布式数据库; clickhouse可以存储海量数据; 因为clickhouse是分布式存储海量数据,所以解决了高并发的问题; clickhouse中的数据底层是列式存储 clickhouse 不仅可以管理自己的数据,也可以读取别人的数据,比如masql , hdfs 网络和本地文件;2.选择ClickHouse 的首要原因是它比较快,但其实它的技术没有什么新的地方,为什么会快?1 C++.
2020-11-06 16:16:27
3313
1
原创 scala详解之面向对象
1.类和对象详解1.1 组成结构构造函数 成员变量 成员方法(函数) 局部变量 代码块1.2 构造器的定义:每个类都有一个主构造器,这个构造器和类定义"交织"在一起类名后面的内容就是主构造器,如果参数列表为空的话,()可以省略,scala的类有且仅有一个主构造器,要想提供更加丰富的构造器,就需要使用辅助构造器,辅助构造器是可选的,它们叫做this注意:主构造器会执行类定义中的所有语句 1.3 构造器的总结1,有两类构造器:主构造器,辅助构造器 2,构造器...
2020-11-04 22:36:42
328
原创 用scala实现共同好友案例和线段重合案例(底层思想wordcount)
1. 共同好友案例1.1 数组准备:A:B,C,D,F,E,OB:A,C,E,KC:F,A,D,ID:A,E,F,LE:B,C,D,M,LF:A,B,C,D,E,O,MG:A,C,D,E,FH:A,C,D,E,OI:A,OJ:B,OK:A,C,DL:D,E,FM:E,F,GO:A,H,I,J1.2 代码实现 //先读取文件数据,将数据转为(用户,array(好友列表)) val arr=Source.fromFile(new File(
2020-11-04 21:27:36
300
原创 scala集合中的函数详解大全(一)
0 目录1.foreach函数2.map函数3.filter和filterNot(过滤函数)4.collect函数5.min和max6.minBy和maxBy7. sum函数8. find 函数9. flatten 函数10flatMap函数11mapValues 函数12sorted函数13sortBy和sortWith 函数14.partition和span 函数15grouped 函数和groupBy函数1.for...
2020-11-04 17:02:07
1351
原创 SCALA中集合常用函数大全(二)
1.reduce函数用法:对集合中的元素进行累加的操作,如果是字符串则是对字符串的拼接 //reduce函数 //先定义一个集合 val ls = List(1, 5, 9, 8, 6, 3) val i = ls.reduce(_ + _)//这个方法是默认从左边开始累加 (((1+5)+9)+8)+6 val i1 = ls.reduce(_ - _)//这个方法是默认从左边开始累减 (((1-5)-9)-8)-6 val i2 = l
2020-11-03 20:54:47
846
原创 Scala基础详解:
1.SCALA简介:Scala是一种多范式的编程语言,其设计的初衷是要集成面向对象编程和函数式编程的各种特性。Scala运行于Java平台(Java虚拟机),并兼容现有的Java程序。简单来说 SCALA就是一门面向函数和面向对象的混合式变成语言;2.学习是SCALA的目的:优雅:这是框架设计师第一个要考虑的问题,框架的用户是应用开发程序员,API是否优雅直接影响用户体验。 速度快:Scala语言表达能力强,一行代码抵得上Java多行,开发速度快;Scala是静态编译的,所以和JRuby
2020-10-31 16:04:50
853
原创 Failed to configure a DataSource: ‘url‘ attribute is not specified and no embedded datasource could!
问题描述: 分析一下:上面的描述是说没有配置数据源,未能确定合适的驱动程序类 原因:因为我在pom文件中添加了mybatis依赖,但是我没有配置连接数据库的url、用户名user 、和密码 password 错误展示:解决方法:1.添加数据库的配置文件2. 如果不用数据库的进行底层的交互,可以先把依赖删掉,等用的时候在进行添加依赖和添加配置文件配置文件如:spring.datasource.url=jdbc:mysql://localhost:3306..
2020-10-27 21:24:18
112
原创 通过web端和tomcat服务端完成用户登陆案例
1.用户登陆案例思路0.先在idea中构建web项目1 编写一个login的页面 在页面上写 form表单 用户名 密码 登录2 将页面的请求用户名和密码发送到后台的Servlet3 编写Servlet , service方法接收页面的请求参数 用户名和密码4 去mysql的数据库那张用户表中去根据用户名和密码查询数据5 返回结果 , 可能有值, 可能没有值(登录失败)2. 实现过程2.1 在idea在构建web项目1.创建maven项目,选择m...
2020-10-24 21:18:41
311
原创 HTTP Status 404 - /webdemo_war/html/webdemo_war/Login
错误展示:HTTP Status 404 - /webdemo_war/html/webdemo_war/Login错误原因:在tomcat中部署web项目时,出现的错误出现404 的原因;1)目录不能被引用。重写的service方法在html文件中form表单在提交时没有找到这个类没有引用到,form表单在默认情况是只在自己的目录下寻找;正确的如图所示在Eclipse的“包资源管理器(PackageExplorer)”检查文件存放的位置。由于META-INF...
2020-10-24 20:00:17
714
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人