自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(303)
  • 收藏
  • 关注

原创 生产环境下Flume配置

鉴于网上关于flume的知识理论太多太杂,缺少生产环境下的配置方案,所以特发此篇我们集群的配置方案供大家参考。

2022-11-14 17:58:11 969

原创 Dolphinscheduler-2.0.3安装报错:请输入英文操作系统租户名

dolphinscheduler请输入英文操作系统租户名

2022-11-11 11:17:13 572 1

原创 在linux中使用crontab定时任务报错:hadoop not found

ERROR: hadoop not foundERROR: JAVA_HOME is not set and could not be found.

2022-11-10 18:11:12 815

原创 FlinkCDC实时读PostgreSQL数据库

使用flinkcdc实时读取pstgresql数据库

2022-11-09 16:04:15 3613 14

原创 PostgreSQL中IF语句如何实现

使用case when代替if

2022-10-31 15:27:18 6480 1

原创 五台大数据集群生产节点安装规划

集群规划

2022-10-19 17:45:27 828

原创 生产环境下Sqoop配置文件

sqoop生产环境配置

2022-10-19 17:19:34 234

原创 2021-07-08

简述SparkStreaming窗口函数的原理(重点)窗口函数就是在原来定义的SparkStreaming计算批次大小的基础上再次进行封装,每次计算多个批次的数据,同时还需要传递一个滑动步长的参数,用来设置当次计算任务完成之后下一次从什么地方开始计算。代码示例: kafkaStream.transform { rdd => offsetRanges = rdd.asInstanceOf[HasOffsetRanges].offsetRanges rdd}.map(_._

2021-07-08 22:15:55 72

原创 2021-07-08

SparkStreaming有哪几种方式消费Kafka中的数据,它们之间的区别是什么?注意:目前spark3.0.0以上版本只有Direct模式。总结:不同版本的offset存储位置0-8 ReceiverAPI offset默认存储在:Zookeeper中0-8 DirectAPI offset默认存储在:CheckPoint手动维护:MySQL等有事务的存储系统0-10 DirectAPI offset默认存储在:_consumer_offsets系统主题手动维护:MySQL等有事务的

2021-07-08 22:14:34 79

原创 2021-06-29

缓存穿透、缓存雪崩、缓存击穿缓存穿透是指查询一个一定不存在的数据。由于缓存命不中时会去查询数据库,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,造成缓存穿透。解决方案:① 是将空对象也缓存起来,并给它设置一个很短的过期时间,最长不超过5分钟② 采用布隆过滤器,将所有可能存在的数据哈希到一个足够大的bitmap中,一个一定不存在的数据会被这个bitmap拦截掉,从而避免了对底层存储系统的查询压力缓存雪崩:如果缓存集中在一段时间内失效,发生大量的缓存穿透,

2021-06-29 22:01:19 66

原创 2021-06-25

#获取最近第二次的活动写一条SQL查询展示每一位用户 最近第二次 的活动,如果用户仅有一次活动,返回该活动。一个用户不能同时进行超过一项活动,以 任意 顺序返回结果。展示效果:+------------+--------------+-------------+-------------+| username | activity | startDate | endDate |+------------+--------------+-------------+------

2021-06-25 23:15:38 112

原创 2021-06-21

如何分析用户活跃?1.如何定义活跃启动算一次活跃下单算一次活跃停留超过5s算活跃...按照公司要求定义活跃2.启动日志在数仓项目中,使用dwd层的文件查看启用日志不同设备的user_id去重获取用户活跃量...

2021-06-21 22:16:10 89

原创 2021-06-20

快排代码实现:/** * 快排 * 时间复杂度:平均时间复杂度为O(nlogn) * 空间复杂度:O(logn),因为递归栈空间的使用问题 */def quickSort(list: List[Int]): List[Int] = list match { case Nil => Nil case List() => List() case head :: tail => val (left, right) = tail.partitio

2021-06-20 21:17:49 75

原创 2021-06-20

DWS层做了哪些事?1.DWS层有3-5张宽表(处理100-200个指标 70%以上的需求)具体宽表名称:用户行为宽表,用户购买商品明细行为宽表,商品宽表,购物车宽表,物流宽表、登录注册、售后等。2.哪个宽表最宽?大概有多少个字段?最宽的是用户行为宽表。大概有60-100个字段3.具体用户行为宽表字段名称CREATE EXTERNAL TABLE dws_user_action_daycount( `user_id` STRING COMMENT '用户id', `login

2021-06-20 21:16:53 252

原创 2021-06-18

ODS层做了哪些事?1)保持数据原貌,不做任何修改2)压缩采用LZO,压缩比是100g数据压缩完10g左右。3)创建分区表

2021-06-18 22:22:34 82

原创 2021-06-18

DWD层做了哪些事?1.数据清洗(1)空值去除(2)过滤核心字段无意义的数据,比如订单表中订单id为null,支付表中支付id为空(3)将用户行为宽表和业务表进行数据一致性处理select case when a is null then b else a end as JZR,​ …from A2.清洗的手段​ HQL、MR、SparkSQL、Kettle、Python(项目中采用sql进行清除)3. 清洗掉多少数据算合理​ 1万条数据清洗掉1条。4.

2021-06-18 22:18:34 104

原创 2021-06-17

电影评分请你编写一组 SQL 查询:查找评论电影数量最多的用户名,如果出现平局,返回字典序较小的用户名。查找在2020 年 2 月 平均评分最高的电影名称,如果出现平局,返回字典序较小的电影名称。展示效果:+--------------+| results |+--------------+| Daniel || Frozen 2 |+--------------+建表语句:Create table If Not Exists 77_Movies (mov

2021-06-17 21:48:16 147

原创 2021-06-17

DWS层DWS层统计各个主题对象的当天行为,服务于DWT层的主题宽表。如图所示,DWS层的宽表字段,是站在不同维度的视角去看事实表,重点关注事实表的度量值,通过与之关联的事实表,获得不同的事实表的度量值。...

2021-06-17 21:47:39 94

原创 2021-06-17

DWT层以分析的主题对象为建模驱动,基于上层的应用和产品的指标需求,构建主题对象的全量宽表。

2021-06-17 21:46:54 68

原创 2021-06-16

DWD层DWD层需构建维度模型,一般采用星型模型,呈现的状态一般为星座模型。维度建模一般按照以下四个步骤:选择业务过程→声明粒度→确认维度→确认事实(1)选择业务过程在业务系统中,如果业务表过多,挑选我们感兴趣的业务线,比如下单业务,支付业务,退款业务,物流业务,一条业务线对应一张事实表。如果小公司业务表比较少,建议选择所有业务线。(2)声明粒度数据粒度指数据仓库的数据中保存数据的细化程度或综合程度的级别。声明粒度意味着精确定义事实表中的一行数据表示什么,应该尽可能选择最小粒度,以此来应各种

2021-06-16 22:08:27 198

原创 2021-06-16

ODS层(1)保持数据原貌不做任何修改,起到备份数据的作用。(2)数据采用压缩,减少磁盘存储空间(例如:原始数据100G,可以压缩到10G左右)(3)创建分区表,防止后续的全表扫描

2021-06-16 22:05:12 68

原创 2021-06-15

控制Spark reduce缓存 调优shufflespark.reducer.maxSizeInFilght 此参数为reduce task能够拉取多少数据量的一个参数默认48MB,当集群资源足够时,增大此参数可减少reduce拉取数据量的次数,从而达到优化shuffle的效果,一般调大为96MB,,资源够大可继续往上调。spark.shuffle.file.buffer 此参数为每个shuffle文件输出流的内存缓冲区大小,调大此参数可以减少在创建shuffle文件时进行磁盘搜索和系统调用的次数

2021-06-15 22:25:42 131 2

原创 2021-06-10

spark调优之前与调优之后性能的详细对比(例如调整map个数,map个数之前多少、之后多少,有什么提升)这里举个例子。比如我们有几百个文件,会有几百个map出现,读取之后进行join操作,会非常的慢。这个时候我们可以进行coalesce操作,比如240个map,我们合成60个map,也就是窄依赖(不走shuffle)。这样再shuffle,过程产生的文件数会大大减少。提高join的时间性能。- 窄依赖表示每一个父RDD的Partition最多被子RDD的一个Partition使用(一对一or多对一),

2021-06-15 22:24:13 76

原创 2021-06-10

如何使用Spark实现TopN的获取(描述思路或使用伪代码)方法1:(1)按照key对数据进行聚合(groupByKey)(2)将value转换为数组,利用scala的sortBy或者sortWith进行排序(mapValues)数据量太大,会OOM。方法2:(1)取出所有的key(2)对key进行迭代,每次取出一个key利用spark的排序算子进行排序方法3:(1)自定义分区器,按照key进行分区,使不同的key进到不同的分区(2)对每个分区运用spark的排序算子进行排序

2021-06-10 22:11:35 86

原创 2021-06-09

当Spark涉及到数据库的操作时,如何减少Spark运行中的数据库连接数?使用foreachPartition代替foreach,在foreachPartition内获取数据库的连接。

2021-06-10 22:09:45 110

原创 2021-06-09

列出指定时间段内所有的下单产品写一个 SQL 语句,要求获取在 2020 年 2 月份下单的数量不少于 100 的产品的名字和数目。返回结果表单的顺序无要求。展示效果:+--------------------+---------+| product_name | unit |+--------------------+---------+| Leetcode Solutions | 130 || Leetcode Kit | 100 |+---

2021-06-09 22:02:17 107

原创 2021-06-09

Spark广播变量广播变量:分布式共享只读变量。广播变量用来高效分发较大的对象。向所有工作节点发送一个较大的只读值,以供一个或多个Spark Task操作使用。比如,如果你的应用需要向所有节点发送一个较大的只读查询表,广播变量用起来会很顺手。在多个Task并行操作中使用同一个变量,但是Spark会为每个Task任务分别发送。//代码演练:object broadcast01 { def main(args: Array[String]): Unit = { //1.

2021-06-09 22:00:19 60

原创 2021-06-09

事实表的分类事务型事实表:如果一类事实,一旦发生,就不会变化。记录这类事实的表,称为事务型事实表! 这个表的特点是表中的数据只会不断新增,不会发生修改! 举例: 支付信息详情表! 事务型事实表 在同步数据时,只同步当天新增的数据!周期型快照事实表:如果某个事实,在一个周期内会不断发生变化,只需要记录在周期结束时,事实的状态,此时这类表称为 周期型快照事实表! 举例: 记录一个人身高生长的事实人时间身高jack2020-1

2021-06-09 08:38:20 81

原创 2021-06-08

餐馆营业额变化增长写一条 SQL 查询计算以 7 天(某日期 + 该日期前的 6 天)为一个时间段的顾客消费平均值查询结果格式的例子如下:查询结果按 visited_on 排序average_amount 要 保留两位小数,日期数据的格式为 (‘YYYY-MM-DD’)展示效果:+--------------+--------------+----------------+| visited_on | amount | average_amount |+---------

2021-06-08 22:07:09 80

原创 2021-06-08

Spark Shuffle默认并行度参数spark.sql.shuffle.partitions 决定 默认并行度200

2021-06-08 22:05:41 67

原创 2021-06-08

spark累加器1.系统累加器object accumulator01_system { def main(args: Array[String]): Unit = { val conf = new SparkConf().setAppName("SparkCoreTest").setMaster("local[*]") val sc = new SparkContext(conf) val dataRDD: RDD[(String, Int)] = sc.makeRDD(Lis

2021-06-08 22:04:37 87

原创 2021-06-08

Spark分区(key value类型)1)默认采用Hash分区​ 缺点:可能导致每个分区中数据量的不均匀,极端情况下会导致某些分区拥有RDD的全部数据。2)Ranger分区​ 要求RDD中的KEY类型必须可以排序。3)自定义分区​ 根据需求,自定义分区。...

2021-06-08 22:02:56 65

原创 2021-06-07

释放缓存和缓存缓存:(1)dataFrame.cache(2)sparkSession.catalog.cacheTable(“tableName”)释放缓存:(1)dataFrame.unpersist (2)sparkSession.catalog.uncacheTable(“tableName”)

2021-06-07 22:23:17 68

原创 2021-06-07

cache缓存级别DataFrame的cache默认采用 MEMORY_AND_DISKRDD 的cache默认方式采用MEMORY_ONLY

2021-06-07 22:22:41 65

原创 2021-06-06

#不同性别每日分数总计写一条SQL语句查询每种性别在每一天的总分,并按性别和日期对查询结果排序展示效果:+--------+------------+-------+| gender | day | total |+--------+------------+-------+| F | 2019-12-30 | 17 || F | 2019-12-31 | 40 || F | 2020-01-01 | 57 || F

2021-06-07 22:22:03 89

原创 2021-06-04

Spark任务的划分(1)Application:初始化一个SparkContext即生成一个Application;(2)Job:一个Action算子就会生成一个Job;(3)Stage:Stage等于宽依赖的个数加1;(4)Task:一个Stage阶段中,最后一个RDD的分区个数就是Task的个数。...

2021-06-06 20:15:20 71

原创 2021-06-04

求团队人数编写一个 SQL 查询,以求得每个员工所在团队的总人数。查询结果中的顺序无特定要求。展示效果:+-------------+------------+| employee_id | team_size |+-------------+------------+| 1 | 3 || 2 | 3 || 3 | 3 || 4 | 1

2021-06-04 22:06:43 133

原创 2021-06-04

Kryo序列化Kryo序列化比Java序列化更快更紧凑,但Spark默认的序列化是Java序列化并不是Spark序列化,因为Spark并不支持所有序列化类型,而且每次使用都必须进行注册。注册只针对于RDD。在DataFrames和DataSet当中自动实现了Kryo序列化。...

2021-06-04 22:06:01 66

原创 2021-06-04

reduceByKey、foldByKey、aggregateByKey、combineByKey区别它们底层调用的方法是一样的ReduceByKey 没有初始值 分区内和分区间逻辑相同foldByKey 有初始值 分区内和分区间逻辑可以相同aggregateByKey 有初始值 分区内和分区间逻辑可以不同combineByKey 初

2021-06-04 22:04:14 68

原创 2021-06-03

不同国家的天气类型需求:写一段 SQL 来找到表中每个国家在 2019 年 11 月的天气类型。天气类型的定义如下:当 weather_state 的平均值小于或等于15返回 Cold,当 weather_state 的平均值大于或等于 25 返回 Hot,否则返回 Warm。展示效果:+--------------+--------------+| country_name | weather_type |+--------------+--------------+| USA

2021-06-03 22:39:06 73

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除