- 博客(184)
- 收藏
- 关注
原创 2022.3版本的idea找不到Include dependencies with “Provided” scope
记录一下找了半天没有找到我的idea中在哪里设置Include dependencies with “Provided” scope选项。在Modify options中的use classpath of model中。
2023-06-07 22:54:53 1661
原创 数据结构 - 队列
3 队列队列是一个有序列表,可以用数组或者链表来实现。队列的特点是先进先出。即:先存入队列的数据,要先取出。后存入的要后取出。3.1 用数组模拟队列队列的最大容量定义为maxSize。因为队列的输入和输出是分别从前后端来处理,因此需要front和rear分别记录队列的前后端的下标,front会随着数据输出而改变,而rear会随着数据输入而改变。用数组模拟队列,这种单项队列,是一次性的,添加满了就不能再利用了。而环形队列可以循环使用。package www.codejiwei.pra
2021-05-21 11:18:27 680
原创 数据结构 - 稀疏数组
2 稀疏数组(SparseArray)--(1)什么是稀疏数组? 稀疏数组:当一个二维数组中很多值是默认值0,因此记录了很多没有意义的数据。使用稀疏数组可以节省空间,只保存元素在二维数组中的位置和所对应的值。 稀疏数组的样式为: row col val 0 原数组行数 原数组列数 不为0元素个数 1 不为0的值所在行 不为0的值所在列 元素的值 。。。。--(2)稀疏数组的使用场景? 当一个数组中大部分
2021-05-21 10:28:06 314
原创 数据结构 - 栈Stack
5 栈(stack)5.1 栈的概念栈,stack。是一个先入后出的有序列表。栈是限制线性表中元素的插入和删除只能在线性表的同一端进行的特殊线性表。允许插入和删除的一端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom)。入栈:先进入的元素,在栈底。出栈:最先进入的元素,最后出栈。从栈顶开始出。5.2 栈的应用场景子程序的调用:在跳往子程序前,会先将下一个指令的地址存到堆栈中,直到子程序执行完后再将地址取出,以回到原来的程序中。处理递归调用:和子程序的调用
2021-05-21 10:27:05 314
原创 离线数仓中的lzo索引
离线数仓中的lzo索引Q1:ODS层怎样设计的? (1)首先数据由Flume(hdfsSink)采集到HDFS上的 ① 此时指定了原始数据上传的路径hdfs.path ② 文件头信息hdfs.filePrefix ③ 是否滚动生成文件hdfs.round ④ 输出文件方式hdfs.fileType=CompressedStream ⑤ 设置了压缩输出文件就要指定压缩编码器:lzop (2)创建外部表 create external tabl
2021-05-06 09:59:05 286
原创 Clickhouse总结
Clickhouse总结Q1: 选择ClickHouse的原因是什么? --(1)采用列式存储 ①在数据存储方面更容易进行数据压缩。节省磁盘空间。 ②在一些聚合计算、计数、求和等操作效率更高。 ③标准化的SQL语句,几乎覆盖所有SQL标准语法。 ④多样化引擎,可以根据不同的需求,给表设置不同的引擎,常用的有MergeTree系列 我们用的是ReplacingMergeTree,可以保证数据表的幂等性 ⑤高吞吐写入能力 Cli
2021-04-17 14:54:39 459
原创 ClickHouse操作指南
1 ClickHouse简介clickhouse是俄罗斯Yandex于2016年开源的列式存储数据库,使用C++语言编写,主要用于在线分析处理查询(OLAP),能够使用SQL查询实时生成分析数据报告。1.1 ClickHouse特点1.1.1 列式存储以下面的表为例:IdNameAge1张三182李四223王五34(1)采用行式存储,数据在磁盘上的组织结构为:优点是:向查询某个人的所有属性的时候,可以通过一次磁盘查找加顺序读取就可以。但是要
2021-04-06 13:31:17 2427
原创 Kafka知识点大汇总
1 Kafka中的一些数量1.1 Kafka的个数Kafka的个数一般是3-5个计算公式为:(生产者生产速率×副本个数/100)×2 + 11.2 Kafka分区的个数Kafka的分区的个数一般是3-10个计算公式为:期望峰值速率/min(生产速率,消费速率)1.3 Kafka的副本个数kafka的副本一般设置为3个,很多企业大都设置为2个副本的个数越多可靠性越高,但是副本越多增加了网络IO传输压力1.4 Kafka日志保存的时间Kafka日志默认保存的时间是7天实际生产环境下一般保
2021-04-04 20:47:57 2008
原创 MapReduce的Shuffle优化
MapReduce的Shuffle优化:(1)map输出端:①增加环形缓冲区的大小默认100M,可以增加到200M②增大环形缓冲区溢写文件的阈值默认0.8,可以增加到0.9③减少对溢写文件merge次数默认10个文件merge一次④不影响业务逻辑的情况下,使用Combiner预聚合如何开启Combiner?set hive.map.aggr = true(2)reduce端:①合理设置Map和Reduce的个数a. Map的个数如何设置呢?通过参数 set mapred.max.s
2021-03-29 00:44:28 555
原创 SparkSQL的优化:(Spark on Hive)
SparkSQL的优化:(Spark on Hive)(1)内存优化①合理设置资源配置–num-executors executor的个数–executor-memory 每个executor的内存–driver-memory Driver端的内存②DS和DF的缓存持久化DS和DF默认的缓存级别是MEMORY_AND_DISK③DS和DF并不是使用java序列化和kryo序列化,而是有一个特殊的序列化方式(2)分区和参数设置①SparkSQL默认shuffle的分区个数为200,由sp
2021-03-29 00:27:41 1045
原创 Spark性能调优
Spark的优化(1)最优资源配置①增加Executor个数,在资源允许的情况下,增加Executor个数可以提高task并行度。比如有4个Executor,每个Executor有2个core,那么可以并行执行8个task。–num-executors②增加每个Executor的CPUcore数,–executor-cores③增加每个Executor的内存,可以缓存更多数据,可以为shuffle提供更多内存,可以为task执行提供更多内存–executor-memory(2)RDD优化①
2021-03-28 17:36:00 171
原创 Hive优化总结
hive的优化:(1)使用mapjoin①mapjoin的原理是把小表加载到内存中在map端进行join,避免reduce处理②多大的表被视为小表呢?默认是25M以下是小表,通过配置参数set hive.mapjoin.smalltable.filesize=25000000③如何开启mapjoin呢?set hive.auto.convert.join=true(2)Fetch抓取(默认就是more)①什么是fetch?Hive中对某些情况的查询可以不走mapreduce②fetch的级别有
2021-03-27 21:59:47 252
原创 Flink状态后端和CheckPoint机制
6.8.5 状态后端什么是状态后端?每传入一条数据,有状态的算子任务都会读取和更新状态。状态的存储、访问以及维护,由一个可插入的组件决定,这个组件就是状态后端。状态后端的作用?本地的状态管理将检查点(checkpoint)状态写入远程存储(1)状态后端分类①MemoryStateBackend内存级别的状态后端本地状态存储在TaskManager的内存中checkpoint保存在JobManager的内存中**特点:**速度快、延迟低、不稳定**使用场景:**1本地测
2021-03-18 00:52:23 1881
原创 Flink状态和键控流
6.8 Flink状态编程有状态的计算是流处理框架要实现的重要功能,因为稍复杂的流处理场景都需要记录状态,然后在新流入数据的基础上不断更新状态。6.8.1 Flink中的状态分类Flink包括两种基本类型的状态Managed State和Raw StateManaged StateRaw State状态管理方式Flink Runtime托管, 自动存储, 自动恢复, 自动伸缩用户自己管理状态数据结构Flink提供多种常用数据结构, 例如:ListState,
2021-03-18 00:51:23 530
原创 Flink定时器
6.7 定时器6.7.1 定时器API以keyBy()之后的键控流的定时器为例://TODO 定时器 API//1. 注册定时器ctx.timerService().registerProcessingTimeTimer();ctx.timerService().registerEventTimeTimer();//2. 删除定时器ctx.timerService().deleteProcessingTimeTimer();ctx.timerService().deleteEventTi
2021-03-18 00:48:52 894
原创 Flink IntervalJoin
(2)Interval Join ★public class Flink22_Process_IntervalJoin { public static void main(String[] args) throws Exception { StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); env.setParallelism(1);
2021-03-18 00:48:03 210
原创 Flink侧输出流机制
6.5 侧输出流(sideOutput)6.5.1 功能1:处理允许迟到后迟到的数据允许迟到数据,窗口也会真正的关闭,如果允许迟到后,还是有迟到的数据怎么办?Flink提供一种侧输出流的机制来处理关窗之后到达的数据。public class Flink19_Watermark_SideOutput { public static void main(String[] args) throws Exception { StreamExecutionEnvironment env
2021-03-18 00:46:18 1131
原创 Flink窗口迟到机制
6.4 窗口允许迟到的数据(1)迟到数据概念迟到数据:时间戳 小于 watermark的数据(2)窗口允许迟到1) 当 wm >= 窗口最大时间戳时, 会 触发,但是不会关窗2) 当 窗口最大时间戳 + 允许迟到时间 >= wm >= 窗口最大时间戳, 每来一条迟到数据,都会进入窗口,触发3) 当 wm >= 窗口最大时间戳 + 允许迟到时间 , 会关窗, 迟到数据不再进入窗口,不会再触发(3)代码无序流watersensor、乱序程度=3、滚动事件窗口大小10
2021-03-18 00:45:29 479
原创 Flink时间语义与WaterMark详解
6.3 时间语义&WaterMark6.3.1 Flink中的时间语义Flink流式操作中,涉及到不同的时间概念。(1)事件时间 event time时间真实发生的时间。Flink1.12默认事件时间。比如:log中,start-log中的ts字段,这个时间就是事件发生的事件。xxx.window(TumblingEventTimeWindows)(2)处理时间 process timeFlink处理start-log中这条数据时的设备时间。Flink1.12之前默认处理
2021-03-18 00:44:02 1149
原创 Flink窗口机制详解
Flink的窗口机制6.1.1 窗口概述窗口window是用来处理无限数据集的有限块。窗口就是把流切成了有限大小的多个存储桶bucket流处理应用中,数据是连续不断的,因此我们不能等所有的数据来了才开始处理,当然也可以来一条数据,处理一条数据,但是有时候我们需要做一些聚合类的处理,例如:在过去的一分钟内有多少用户点击了网页。这种情况下,就适合定义一个窗口,用来收集最近一分钟内的数据,并对这个窗口的数据进行计算。6.1.2 窗口分类基于时间的窗口(时间驱动)基于元素的窗口(数据驱动)ke
2021-03-18 00:42:37 3425
原创 Flink流处理核心编程
Flink流处理核心编程5.1 Environment//批执行环境ExecutionEnvironment benv = ExecutionEnvironment.getExecutionEnvironment();//流执行环境StreamExecutionEnvironment senv = StreamExecutionEnvironment.getExecutionEnvironment();//1.12版本,可以在流式的执行环境中,指定为 批处理模式 => 为了更像 流批
2021-03-18 00:40:09 743
原创 离线数仓02-业务数据采集平台
1 电商业务简介1.1 电商业务流程1.2 电商常识SKU=Stock Keeping Unit(库存量基本单位)。现在已经被引申为产品统一编号的简称,每种产品均对应有唯一的SKU号。SPU(Standard Product Unit):是商品信息聚合的最小单位,是一组可复用、易检索的标准化信息集合。例如:iPhoneX手机就是SPU。一台银色、128G内存的、支持联通网络的iPhoneX,就是SKU。SPU表示一类商品。好处就是:可以共用商品图片,海报、销售属性等。1.3
2021-03-07 00:32:32 354
原创 离线数仓03-数仓分层业务逻辑
1 数仓分层1.1 为什么要分层?(1)把复杂的问题简单化把复杂的任务分解为多层完成,方便定位问题~少写了很多复杂的sql(2)减少重复开发规范数据分层,通过中间数据,可以减少极大的重复计算,增加复用性中间结果保存出来,以后拿数据就能从中间获取,不用从最开始的数据拿(3)隔离原始数据将真实数据和要使用的统计数据解耦开;权限管理:控制哪些人可以访问哪些表。--数据怎么到ODS层?1. load2. flume -> hive sin
2021-03-07 00:32:07 1101
原创 SpringBoot实现Sugar数据接口
1 数据可视化接口1.1 设计思路之前把轻度聚合的结果都保存到了ClickHouse中,主要目的就是提供即时的数据查询、统计、分析服务。这些统计服务一般会用两种形式展示,一种是为专业的数据分析人员的BI工具,另一种是为非专业人员提供更加直观的数据大屏。 下面主要是面向百度的sugar的数据大屏服务的接口开发。1.2 需求梳理1.2.1 最终效果1.2.2 分析可视化大屏组件名称组件查询指标对应的数据表总成交金额数字翻牌订单总金额product_stats
2021-03-07 00:31:52 1450
原创 离线数仓01-用户行为日志采集平台
1 数据仓库项目1.1 数据仓库概念数据仓库(Data Warehouse)①日志采集系统②业务系统数据③爬虫系统等获得的数据进行清洗、转义、分类、重组、合并、拆分、统计等操作。1.2 项目需求用户行为数据采集平台的搭建(前端埋点日志数据)业务数据采集平台的搭建(MySQL业务数据)数据仓库维度建模(hive数据分层:ods、dwd、dws、dwt、ads)即席查询工具,随时进行指标分析(es、kibana)集群性能监控元数据管理质量监控2 架构设计2.1 技术选型数据采集传
2021-03-06 02:06:47 446
原创 Flink电商实时数仓项目05-数据可视化
1 数据可视化接口1.1 设计思路之前把轻度聚合的结果都保存到了ClickHouse中,主要目的就是提供即时的数据查询、统计、分析服务。这些统计服务一般会用两种形式展示,一种是为专业的数据分析人员的BI工具,另一种是为非专业人员提供更加直观的数据大屏。 下面主要是面向百度的sugar的数据大屏服务的接口开发。1.2 需求梳理1.2.1 最终效果1.2.2 分析可视化大屏组件名称组件查询指标对应的数据表总成交金额数字翻牌订单总金额product_stats
2021-03-06 02:01:20 651
原创 Flink电商实时数仓项目04-DWS层
1 DWS层和DWM层的设计1.1 DWS层 前面的总结DWS层的定位是什么呢?轻度聚合,因为DWS层要应对很多实时查询,如果是完全的明细那么查询的压力非常大。将更多的实时数据以主题的形式组合起来便于管理,同时也能减少维度查询的次数。ODS层: -- 日志数据: nginx+日志采集服务器(3台) 将数据采集到Kafka(ods_base_log) -- 业务数据: Maxwell监控MySQL(binlog) 将数据采集到Kafka(ods_b
2021-03-06 02:00:09 648
原创 Flink电商实时数仓项目03-DWM层
1 DWM层与DWS层的设计思路1.1 设计思路用户行为日志:模拟日志jar -> nginx -> web日志服务器 -> kafka(ods_base_log) -> flink(BaseLogApp) -分流-> kafka(dwd_page_log|dwd_start_log|dwd_display_log) ->接下来要对数据做简单的处理,为后面的dws层的数据做准备,所以我们这里需要将数据做处理 发送到 dwm层业务数据:模拟数据jar ->
2021-03-06 01:59:05 1289 1
原创 Flink电商实时数仓项目02-DWD层
1 需求分析及实现思路1.1 分层需求分析1.1.1 实时数仓为什么要分层?建设实时数仓的目的,主要是为了增加数据计算的复用性。每次新增加统计需求时,不至于从原始数据进行计算,而是从半成品继续加工而成。比如直接从dwd、dim、dwm、dws取数据。1.2 每层的职能分层数据描述生成计算工具存储媒介ODS原始数据,日志和业务数据日志服务器,maxwellkafkaDWD根据数据对象为单位进行分流,比如订单、页面访问等等。FLINKkafkaD
2021-03-06 01:57:57 513
原创 Flink电商实时数仓项目01-ODS层
Flink电商实时数仓项目 - 数据采集1 电商实时数仓项目概述1.1 数据分层分析离线数仓项目的分层为:ODS、DWD、DWS、DWT、ADSflink实时数仓项目的分层为:ODS、DWD、DIM、DWM、DWS、ADS其中ODS层为原始数据层;DWD层详细数据层,根据数据对象为单位进行分流,比如订单、页面访问等;DIM层维度数据层;DWM层对部分数据对象进一步加工,比如独立访问、跳出行为,也可以与维度进行关联,形成宽表,依旧是明细数据;DWS层根据某个主题将多个实时数据轻度聚合,
2021-03-06 01:56:43 1007 3
原创 phoenix使用指南
7 phoenix7.1 phoenix简介Phoenix是Hbase开源的SQL皮肤,可以用标准的JDBC API来代替HBase客户端API来创建表、插入数据和查询Hbase数据。特点:容易集成:如Spark、Hive、Flume、MR操作简单:DML命令以及DDL命令支持HBase二级索引7.2 phoenix的安装配置步骤1:上传安装包到/opt/software步骤2:解压安装包到/opt/module/[atguigu@hadoop102 software]$ tar
2021-03-06 01:48:51 2067
原创 DataX下载安装及操作
1.1 DataX下载地址http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz1.2 安装DataX步骤1:使用wget命令,采用阿里云地址下载[root@hadoop201 software]# wget http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz下载后当前路径下会有tar包-rw-r--r-- 1 root root 8293
2021-03-06 01:46:29 9486
原创 DataX执行的json文件详细解析
1.3 DataX执行的json文件解析{ job: //最外侧,任务 setting:{ //设置 speed:{ //速度 channel:3 //指定用几个子线程去跑这个任务,线程越多,速度越快 content:{ //内容 reader:{ //读数据部分 name:"hdfsreader" //指明什么类型的reader,hdfsreader读HDFS parameter:{ //参数 pa
2021-03-06 01:43:54 7958
原创 Flink 基础核心概念介绍
Flink 基础核心概念(1)客户端客户端并不是运行和程序执行的一部分,而是准备和发送dataflow到 JobManager,然后客户端可以断开与JobManager的连接(detached mode),也可以继续保持与JobManager的连接(attached mode)客户端作为触发执行的java或者scala代码的一部分运行, 也可以在命令行运行:bin/flink run …Client解析代码生成逻辑流图(StreamGraph)将StreamGraph优化成作业图(
2021-02-26 09:50:34 584
原创 Flink框架基础原理
1 Flink简介Flink是分布式、高性能、随时可用、准确的流处理框架。Flink是一个一个框架、分布式处理引擎,用于对无界和有界数据流进行有状态计算。1.1 Flink特点①事件驱动型(Event-driven)事件驱动型应用是一类具有状态的应用,它从一个或多个事件流提取数据,并根据到来的事件触发计算、状态更新、或其他外部动作。比较典型的就是以Kafka为代表的消息队列就是事件驱动型应用。(Flink的计算也是事件驱动型)。1.2 流处理VS批处理批处理和流处理是根据处理方式划分的:批处
2021-02-26 09:48:21 1053
原创 IDEA编译java提示找不到符号
问题:IDEA中报找不到符号的错误。原因:使用lombok插件失效。idea上下载的插件一般都是最新版本的plugin,可能与旧版本的lombok依赖有冲突。解决方式:在以下位置加上该配置"-Djps.track.ap.dependencies=false"...
2021-02-04 23:30:25 537 1
原创 azkaban集群启动命令和脚本
zakaban启动分为Executor Server和Web Server启动ExecutorServer端启动命令:[atguigu@hadoop102 azkaban-exec]$ bin/start-exec.sh[atguigu@hadoop103 azkaban-exec]$ bin/start-exec.sh[atguigu@hadoop104 azkaban-exec]$ bin/start-exec.sh然后是ExecutorServer的激活#!/bin/bashf
2021-02-03 09:49:06 1100
原创 Maxwell启动脚本
#!/bin/bashcase $1 in "start" ){ /opt/module/maxwell/bin/maxwell --config /opt/module/maxwell/config.properties > /dev/null 2>&1 &};; "stop" ){ ps -ef | grep maxwell | grep -v grep |awk '{print $2}' | xargs k
2021-02-03 09:43:08 851
原创 elastic search集群脚本(集成kibana)
#!/bin/bashes_home=/opt/module/elasticsearchkibana_home=/opt/module/kibanacase $1 in "start") { for i in hadoop102 hadoop103 hadoop104; do echo "=============== $i starting ES ===============" ssh
2021-02-03 09:41:06 252
原创 zookeeper集群脚本
#! /bin/bashcase $1 in "start" ){ for i in hadoop102 hadoop103 hadoop104; do echo "----------- zookeeper $i 启动 -----------" ssh $i "/opt/module/zookeeper/bin/zkServer.sh start" done };;
2021-02-03 09:39:43 197
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人