GScallion
码龄10年
关注
提问 私信
  • 博客:17,126
    17,126
    总访问量
  • 28
    原创
  • 1,454,014
    排名
  • 9
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:北京市
  • 加入CSDN时间: 2014-12-08
博客简介:

qq_24325581的博客

查看详细资料
个人成就
  • 获得2次点赞
  • 内容获得7次评论
  • 获得52次收藏
创作历程
  • 2篇
    2022年
  • 26篇
    2021年
成就勋章
TA的专栏
  • 数据仓库
    6篇
  • Spark
    10篇
  • Flink
    6篇
  • 数据结构与算法
    4篇
  • Java
    2篇
创作活动更多

超级创作者激励计划

万元现金补贴,高额收益分成,专属VIP内容创作者流量扶持,等你加入!

去参加
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

数仓实施过程

数仓实施过程
原创
发布博客 2022.09.29 ·
773 阅读 ·
0 点赞 ·
1 评论 ·
1 收藏

Spark:技术点总结

一、发生oom的解决方案一、Driver 内存不够1、读取数据太大-、增加Driver内存,–driver-memory2、数据回传-、collect会造成大量数据回传Driver,使用foreach二、Executor 内存不够1、map 类操作产生大量数据,包括 map、flatMap、filter、mapPartitions等-、使用repartition,减少每个 task 计算数据的大小,从而减少每个 task 的输出-、减少中间输出:用 mapPartitions 替代多个 m
原创
发布博客 2022.04.25 ·
2476 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

离线数仓:建模原理

一、分层概述https://www.bilibili.com/video/BV1Hp4y1z7aZ?p=78二、数据集市三、数仓命名规范https://www.bilibili.com/video/BV1Hp4y1z7aZ?p=80四、范式理论1、概述https://www.bilibili.com/video/BV1Hp4y1z7aZ?p=812、函数依赖https://www.bilibili.com/video/BV1Hp4y1z7aZ?p=823、三范式https:/
原创
发布博客 2021.10.14 ·
401 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

数据结构与算法:合并排序

一、原理合并排序就是利用二分法的思想,将一个数组一分为二,然后继续递归式的继续划分小数组,直到划分到最后小数组中只剩下一个元素的时候,再递归回退合并排序起来,这样每次递归回退,就能将两个小数组合并为一个大数组,直到回退到最后合并并排序为一个大的数组图例如下:二、示例代码public class MergeSort { public static void main(String[] args) { int[] nums = {2, 1, 7, 9, 5, 8};
原创
发布博客 2021.09.02 ·
255 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

数据结构与算法:插入排序

一、原理插入排序的原理即是,从第二个元素开始,找到合适的位置,将元素插入到之前已排好序的元素中去,依次下去最终完成排序。就类似打扑克牌,每次抓到一张新的牌时,都将其插入到手中已排好序的牌组中。插入排序适用于少量数据的排序,特别是将一个新的元素插入到已有的排好序的数组中,插入排序是一种稳定的排序方法。插入排序的时间复杂度为 O(n^2)。由于每次插入一个新的元素,都需要遍历之前的元素,这种遍历方式的时间复杂度为 O(n),排序相当于需要插入 n 个元素,即综合时间复杂度为 O(n^2)。二、示例代码
原创
发布博客 2021.08.30 ·
122 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

数据结构与算法:冒泡排序

一、原理给定一个数组,把数组里的元素通通倒入到水池中,这些元素将通过相互之间的比较,按照大小顺序一个一个地像气泡一样浮出水面。具体的实现方法就是:每一轮,从杂乱无章的数组头部开始,每两个元素比较大小并进行交换,直到这一轮当中最大或最小的元素被放置在数组的尾部,然后不断地重复这个过程,直到所有元素都排好位置。元素相互比较的过程就是冒泡排序的核心操作。二、示例代码public class BubbleSort { public static void main(String[] args) {
原创
发布博客 2021.08.30 ·
94 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

数据结构与算法:快速排序

一、原理对于任意一个无序数组,我们随机的选一个元素作为基准元素(例如:数组中的最后一个或者第一个元素, 然后我们将数组中的剩余元素分别与基准元素进行比较,将小于或等于基准元素的数据放在基准元素的左边,将大于基准元素的数据放在基准元素的右边,当全部比较完成之后,基准元素在数组中的位置就确定了下来。然后,在分别对左边数组和右边的数组递归的进行上面的操作,直到每一个元素的位置都唯一确定下来。注意:快速排序最难理解的地方是如何将小于基准元素的元素放在左边,将大于基准元素的元素放在右边,本示例代码使用双指针方法
原创
发布博客 2021.08.20 ·
169 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

大数据技术点

一、数据结构二、Java一、多线程1、并行串行2、jdk提供的线程池有哪几个,优缺点是什么3、自定义线程池涉及到的几个参数是什么,一个新线程提交到线程池的处理流程3、多线程就涉及到锁跟计数器4、JUC包,几个常问点5、 AbstractQueuedSynchronizer6、 volatile二、集合1、什么是集合2、集合和数组的区别3、使用集合框架的好处4、常用的集合类有哪些?5、List,Set,Map三者的区别?List、Set、Map 是否继承自 Collection
原创
发布博客 2021.08.16 ·
297 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Hive:窗口函数

一、窗口函数是什么二、窗口函数分类一、聚合型窗口函数二、分析型窗口函数三、取值型窗口函数三、参考文章Hive 窗口函数
原创
发布博客 2021.08.10 ·
819 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

Java:线程池的使用

一、什么是线程池二、Executor源码1、newFixedThreadPool创建一个线程池,该线程池重用在共享无界队列上运行的固定数量的线程。在任何时候,最多N个线程将是活动的处理任务。如果在所有线程都处于活动状态时提交其他任务,它们将在队列中等待,直到有线程可用。如果任何线程在关机之前的执行过程中由于故障而终止,那么如果需要执行后续任务,将使用一个新线程代替它。池中的线程将一直存在,直到显式关闭。//nThreads 池中的线程数//ExecutorService 新创建的线程池publi
原创
发布博客 2021.08.05 ·
802 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

Java:多线程

一、什么是多线程1、进程与线程进程:当一个程序运行起来后就是一个单独的进程线程:一个进程包含很多个线程,它是CPU调度的最小单元,由CPU一条一条的执行指令2、并行与并发并行:多核CPU运行多线程,每个核在同一时刻都有线程在运行并发:单核CPU运行多线程,必须通过时间片切换才能实现,在同一时刻其实只能运行一个线程,但是在宏观上看该核也实现了多线程的运行上下文切换:对于单核CPU来说,在同一个时刻只能运行一个线程,当在运行一个线程的过程中转去运行另一个线程,这个就叫做线程上下文转换。当然为了便于
原创
发布博客 2021.08.02 ·
161 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Flink:异步IO关联HBase维表数据

一、使用异步IO关联HBase维表数据优点为避免在流计算环境中频繁的以同步方式查询外部维表,Flink官方提供使用异步IO与外部系统并发的交互方式,这样可以减轻因为网络交互引起的系统吞吐和延迟问题。当然,为了避免频繁与外部系统进行交互,建议使用内部缓存的方式存储近期容易使用到的维度数据,也就是LRU(最近最少使用)思想,业界经常使用的一个缓存机制是Guava 库提供的 CacheBuilder。整体的设计思想就是:先用异步IO将HBase维表数据加载到缓存中,这样在关联维表时候先去缓存中查找,如果找不到
原创
发布博客 2021.07.20 ·
2888 阅读 ·
0 点赞 ·
3 评论 ·
19 收藏

数据倾斜问题

一、什么是数据倾斜二、产生原因三、解决方法
原创
发布博客 2021.06.21 ·
411 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

实时数仓:架构

一、数仓架构1、美团基于 Flink 的实时数仓建设实践实时数仓架构:各层次使用的存储方案:
原创
发布博客 2021.06.17 ·
2646 阅读 ·
0 点赞 ·
1 评论 ·
21 收藏

Flink:状态与容错

Checkpointing
原创
发布博客 2021.06.16 ·
297 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Flink:Watermark

一、Watermark简介与用途二、Watermark策略1、Watermark策略用途2、Watermark策略源码3、Watermark策略测试案例三、自定义Watermark生成器1、自定义周期性Watermark生成器1、源码2、测试案例2、自定义标点Watermark生成器1、源码2、测试案例四、Watermark策略的使用位置1、在Kafka连接器上使用2、在算子上使用五、在使用Watermark时需注意的地方1、window的触发条件2、处理空闲数据源六、完
原创
发布博客 2021.06.05 ·
415 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

Flink:窗口操作

一、窗口操作1、Keyed Windowsstream .keyBy(...) <- keyed versus non-keyed windows .window(...) <- required: "assigner" [.trigger(...)] <- optional: "trigger" (else default trigger) [.evi
原创
发布博客 2021.06.05 ·
367 阅读 ·
0 点赞 ·
1 评论 ·
0 收藏

Flink:双流Join和维表Join

一、双流Join1、inner join2、outer join3、interval join详细代码package com.scallion.job;import com.scallion.common.Common;import com.scallion.utils.FlinkUtil;import org.apache.flink.api.common.functions.CoGroupFunction;import org.apache.flink.api.common.func
原创
发布博客 2021.05.14 ·
758 阅读 ·
0 点赞 ·
0 评论 ·
5 收藏

Flink:ProcessFunction源码分析

参考:https://zhuanlan.zhihu.com/p/130708277
原创
发布博客 2021.05.07 ·
485 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

Spark:coalesce repartition 源码分析

Spark版本:2.4.0源代码位置:org/apache/spark/rdd/RDD.scala应用示例:scala> val x=(1 to 10).toListx: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)scala> val df1=x.toDF("df")df1: org.apache.spark.sql.DataFrame = [number: int]scala> df1.rdd.partitions.siz
原创
发布博客 2021.02.01 ·
384 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多