自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Flink-侧边流

侧边流废话少说,上代码测试数据:{"data":{"order_id":"100001","user_id":"A001","amount":"10.2","create_time":"2021-07-08 00:59:59"},"table_name":"order_info"}{"data":{"order_id":"100001","sku_id":"11","sku_name":"可乐500ml","amount":"3.0","create_time":"2021-07-08 01:00:

2021-07-08 19:56:56 1061 1

原创 各大厂大数据应用实践

美团美团外卖流量数据的采集加工和应用美团外卖实时数仓建设实践美团外卖离线数仓建设实践美团 Flink 实时数仓应用经验分享Druid SQL和Security在美团的实践阿里菜鸟实时数仓2.0进阶之路Flink1.11+Hive批流一体数仓阿里巴巴电商搜索推荐实时数仓演进之路优酷大数据OLAP技术选型深入分析 Flink SQL 工作机制增强分析技术原理与实践菜鸟实时数仓技术架构演进Apache Flink OLAP引擎性能优化及应用Flink如何支持特征工程、在线学习、在线预

2021-06-05 15:39:47 381

原创 Flink pom文件模板

创建Flink项目时,如果是新手最好是根据官方的建议创建相应的Flink项目。官方这边推荐两个方式创建第一种方式,使用maven进行创建项目,前提你得安装maven:$ mvn archetype:generate \ -DarchetypeGroupId=org.apache.flink \ -DarchetypeArtifactId=flink-quickstart-java \ -DarchetypeVersion=1.13.0Parameter

2021-05-06 19:52:24 834

原创 hive spark sql 优化干货篇

干货奉上~ 多多收藏多多转发参数优化## 开启动态分区set hive.exec.dynamic.partition.mode=nonstrict;## 开启动态分区set hive.exec.dynamic.partition=true;## 分区数set hive.exec.max.dynamic.partitions = 1000;## 无关子查询 可以并行set hive.exec.parallel = true ; ## 如果是小表,自动选择Mapjoin:set hi

2021-03-22 16:24:32 779

原创 kafka工具类

背景在做数据开发时,经常预见要查看kafka 元数据的一些信息,比如有多少个topic、某个topic中有多少分区、创建topic、删除topic等等。代码废话不多,直接撸。我们的maven版本为: <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka_2.13</artifactId> <version>2.7

2021-03-22 15:46:19 1004

原创 Properties常用工具类(utils)

背景在java开发过程中,需要从配置文件中获取属性,以及属性值。今天写一个通用的工具类,来满足日常需要。废话不多,直接撸。代码首先,我们要准备两个东西。第一个是我们的配置文件我们在resource 文件夹下创建一个配置文件consumer_prod.properties,里边变的内容可以随意写:bootstrapServers=localhost:9092groupId=gpfenableAutoCommit=trueautoCommitIntervalMs=1000keyDeseria

2021-03-22 15:09:15 771

原创 kafka自定义分区

默认的分区策略1.如果键值为 null,并且使用了默认的分区器,那么记录将被随机地发送到主题内各个可用的分区上。分区器使用轮询(Round Robin)算法将消息均衡地分布到各个分区上。2.如果键不为空,并且使用了默认的分区器,那么 Kafka 会对键取 hash 值然后根据散列值把消息映射到特定的分区上。这里的关键之处在于,同一个键总是被映射到同一个分区上,所以在进行映射时,我们会使用主题所有的分区,而不仅仅是可用的分区。这也意味着,如果写入数据的分区是不可用的,那么就会发生错误。但这种情况很少发生。

2021-03-19 16:06:43 701

原创 Mac安装brew

Mac 安装 brew(最新教程,绝对可行,一行代码搞定,不报错)现在安装brew,一会报这个错,一会儿报那个错,上网查了很多教程,用了很多时间都是不可以,电脑开VPN翻墙也不行。Warning: The Ruby Homebrew installer is now deprecated and has been rewritten inBash. Please migrate to the following command:/bin/bash -c "$(curl -fsSL https://r

2021-03-17 20:21:23 194 1

原创 Flink数据,写入HDFS - 使用 StreamingFileSink

一、应用场景:Flink 消费 Kafka 数据进行实时处理,并将结果写入 HDFS。二、Streaming File Sink由于流数据本身是无界的,所以,流数据将数据写入到分桶(bucket)中。默认使用基于系统时间(yyyy-MM-dd–HH)的分桶策略。在分桶中,又根据滚动策略,将输出拆分为 part 文件。1、Flink 提供了两个分桶策略,分桶策略实现了org.apache.flink.streaming.api.functions.sink.filesystem.BucketAss

2020-11-24 14:41:59 11578 8

原创 Flink 数据保存 Redis(自定义Redis Sink ) 实现exactly-once

通过如下链接:Flink官方文档,我们知道数据保存到 Redis 的容错机制是 at least once。所以我们通过幂等操作,使用新数据覆盖旧数据的方式,以此来实现 exactly-once 。1.代码部分1.1 config.properties配置文件redis.host=192.168.204.210redis.port=6379redis.password=123456redis.timeout=5000redis.db=01.2 FlinkUtils工具类package c

2020-11-23 19:35:24 1730

原创 Flink 之 mysql二阶段提交简述

1. 2PC简介两阶段提交(two-phase commit, 2PC)是最基础的分布式一致性协议,应用广泛。在分布式系统中,为了让每个节点都能够感知到其他节点的事务执行状况,需要引入一个中心节点来统一处理所有节点的执行逻辑,这个中心节点叫做协调者(coordinator),被中心节点调度的其他业务节点叫做参与者(participant)。2PC。顾名思义,2PC将分布式事务分成了两个阶段,两个阶段分别为提交请求(投票)和提交(执行)。协调者根据参与者的响应来决定是否需要真正地执行事务,具体流程如下。

2020-11-23 14:05:25 1406 3

原创 kafka中的topic如何删除

彻底删除Kafka中的topic1、删除kafka存储目录(server.properties文件log.dirs配置,默认为"/tmp/kafka-logs")相关topic目录2、Kafka 删除topic的命令是: ./bin/kafka-topics --delete --zookeeper 【zookeeper server】 --topic 【topic name】 如果kafaka启动时加载的配置文件中server.properties没有配置delete.topic.enabl

2020-11-20 10:06:51 791

原创 canal配置canal.instance.filter.regex无效

canal 可以通过在instance.properties设置canal.instance.filter.regex,来忽略不关心的数据变更的parse和sink处理,优化性能,同时减少不必要的存储开销。canal instance启动时,默认加载instance.properties的canal.instance.filter.regex参数,之后会根据conf/canal/meta.dat...

2019-08-29 16:42:53 8679 1

原创 Canal获取mysql数据

背景早期,阿里巴巴 B2B 公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求 ,主要是基于trigger的方式获取增量变更。从 2010 年开始,公司开始逐步尝试数据库日志解析,获取增量变更进行同步,由此衍生出了增量订阅和消费业务,从此开启一段新纪元。【github项目】当前的 canal 支持源端 MySQL 版本包括 5.1.x , 5.5.x , 5.6.x , 5.7.x ,...

2019-08-29 15:03:23 1536

原创 CDH使用Solr实现HBase二级索引

一、为什么要使用Solr做二级索引在Hbase中,表的RowKey 按照字典排序, Region按照RowKey设置split point进行shard,通过这种方式实现的全局、分布式索引. 成为了其成功的最大的砝码。然而单一的通过RowKey检索数据的方式,不再满足更多的需求,查询成为Hbase的瓶颈,人们更加希望像Sql一样快速检索数据,可是,Hbase之前定位的是大表的存储,要进行这样的...

2019-07-17 18:56:08 444

原创 Kafka参数调优

背景kafka现在是一个很流行的消息中间件,在个大架构中扮演者重要的角色,而在使用Kafka的客户端编写代码与服务器交互的时候,是需要对客户端设置很多的参数的。眼花缭乱,刚接触kafka的朋友对这些参数并不是很了解,接下来我们就针对这些参数进行一些讨论.1. 一段Kafka生产端的示例代码Properties props = new Properties();props.put("boo...

2019-05-20 11:32:57 156

原创 SpakStreaming + kafka 使用方法

kafka 基础使用shell 创建创建一个topic/usr/bin/kafka-topics --create --zookeeper cdh1:2181/kafka --replication-factor 2 --partitions 4 --topic test-gpf-topic–replication-factor 副本数量–partitions 分 区数量–topic...

2019-04-22 15:23:14 201

原创 python3之路 基础-linux安装RabbitMQ以及管理

centos7安装RabbitMQ首先需要安装erlangrpm -Uvh https://mirrors.tuna.tsinghua.edu.cn/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm也可以自己选择其他版本,点击选择执行安装命令yum install erlang -y如果出现错误 error原因:机器...

2019-02-26 11:00:36 391

原创 python3之路 基础-select

首先列一下,sellect、poll、epoll三者的区别selectselect最早于1983年出现在4.2BSD中,它通过一个select()系统调用来监视多个文件描述符的数组,当select()返回后,该数组中就绪的文件描述符便会被内核修改标志位,使得进程可以获得这些文件描述符从而进行后续的读写操作。select目前几乎在所有的平台上支持,其良好跨平台支持也是它的一个优点,事实上从现在...

2019-02-25 11:42:32 1177

原创 python3之路 基础-IO模式

同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案是不同的。所以先限定一下本文的上下文。本文讨论的背景是Linux环境下的network IO。铺垫在进行解释之前,首先要说明几个概念:用户空间和内核空间进程切换进程的阻塞文件描述符缓存 I/O用户空间与内核空间现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻...

2019-02-21 15:35:35 225

原创 python3之路 基础-事件驱动模型

通常,我们写服务器处理模型的程序时,有以下几种模型:(1)每收到一个请求,创建一个新的进程,来处理该请求;(2)每收到一个请求,创建一个新的线程,来处理该请求;(3)每收到一个请求,放入一个事件列表,让主进程通过非阻塞I/O方式来处理请求上面的几种方式,各有千秋,第(1)中方法,由于创建新的进程的开销比较大,所以,会导致服务器性能比较差,但实现比较简单。第(2)种方式,由于要涉及到线程...

2019-02-21 11:53:31 494

原创 python3之路 基础-协成

协程协程,又称微线程,纤程。英文名Coroutine。一句话说明什么是线程:协程是一种用户态的轻量级线程。协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈。因此:协程能保留上一次调用时的状态(即所有局部状态的一个特定组合),每次过程重入时,就相当于进入上一次调用的状态,换种说法:进入上一次离开时所处逻辑流的位置。...

2019-02-21 11:23:09 305

原创 数据仓库设计

三范式【简述】:第一范式:每一列都不可在分裂,有且仅有一个值第二范式:在满足第一范式的情况下,每一行有且仅有一个主键,表示该条数据的唯一第三范式:在满足第二范式的情况下,每一行的每一列都不可出现其他表中非主键列。星型模型:星型模型是数据集市维度建模中推荐的建模方法。星型模型是以事实表为中心,所有的维度表直接连接在事实表上,像星星一样。星型模型的特点是数据组织直观,执行效率高。因为在数...

2019-02-20 08:51:59 453

原创 python3之路 基础-多进程

进程 线程之间的区别进程:一个资源的集合线程:操作系统执行任务的最小单位进程:不可共享数据线程:可共享数据线程和进程的关系以及区别?进程和线程的关系:一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。资源分配给进程,同一进程的所有线程共享该进程的所有资源。处理机分给线程,即真正在处理机上运行的是线程线程在执行过程中,需要协作同步。不同进程的线程间要利用...

2019-02-18 14:54:51 191

原创 python3之路 基础-进程、线程

进程与线程进程程序的执行实例称为进程。每个进程提供执行程序所需的资源。进程具有虚拟地址空间、可执行代码、系统对象的打开句柄、安全上下文、唯一进程标识符、环境变量、优先级类、最小和最大工作集大小以及至少一个执行线程。每个进程都是用一个线程(通常称为主线程)启动的,但是可以从它的任何线程创建额外的线程。线程线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。...

2019-02-15 13:59:18 109 1

原创 python3之路 基础-socket

网络传输原理socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,对于文件用【打开】【读写】【关闭】模式来操作。socket就是该模式的一个实现,socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO、打开、关闭)socket概念socket通常也称作&amp;quot;套接字&amp;quot;,用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过&amp;quot;套接字&amp;quot;向

2019-02-14 16:34:48 147

原创 python3之路 linux升级python3.5.2

在python2和3的变化很大,这里边我们将linux系统自带的python2.7升级至python3.5检查确认系统的相关信息[root@CDH2 ~]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) [root@CDH2 ~]# uname -aLinux CDH2 3.10.0-693.el7.x86_...

2019-02-14 14:43:51 589

原创 python3之路 基础-类的特殊成员方法

在python3中有个很多python自定义的类的特殊成员方法。下面我们一一学来docmodule 和 classinitdelcalldictstrgetitem、setitem、delitemnew \ metaclass__doc__表示类的描述信息class Demo(object): &quot;&quot;&quot; 我是一个描述,我可以通过__doc__来调用 ...

2019-02-11 10:48:13 210

原创 python3之路 基础-paramiko

paramiko模块介绍paramiko模块提供了基于ssh连接,进行远程登录服务器执行命令和上传下载文件的功能。这是一个第三方的软件包,使用之前需要安装。paramiko的安装首先确保自己的电脑上已经安装了python执行 pip install paramiko 安装执行 pip uninstall paramiko 卸载paramiko的使用方法首先简单的使用以下__au...

2019-02-06 22:20:44 446

原创 Impala基础知识、使用、优化

Impala简介Impala是Cloudera公司主导开发的新型查询系统,它提供SQL语义,能查询存储在Hadoop的HDFS和HBase中的PB级大数据。已有的Hive系统虽然也提供了SQL语义,但由于Hive底层执行使用的是MapReduce引擎,仍然是一个批处理过程,难以满足查询的交互性。相比之下,Impala的最大特点也是最大卖点就是它的快速。优点Impala不需要把中间结果写入磁...

2019-02-02 21:08:57 2601

原创 python3之路 基础-静态方法、类方法、属性方法

在python3中一些有高级语法,今天简单介绍一下@staticmethod静态方法@classmethod类方法@property属性方法@staticmethod【静态方法】通过@staticmethod装饰器即可把其装饰的方法变为一个静态方法,什么是静态方法呢?其实不难理解,普通的方法,可以在实例化后直接调用,并且在方法里可以通过self.调用实例变量或类变量,但静态方法...

2019-01-28 17:52:14 319

原创 python3之路 基础-时间

time模块在敲代码过程中,我们难免会涉及到时间的转换,那么Python3中的时间是如何转换的呢?struct_time一般是tuple,根据下面打印出来的可以大致看出来 年、月、日等信息time.struct_time (tm_year=2019, tm_mon=1, tm_mday=21, tm_hour=6, tm_min=23, tm_sec=20, tm_wday=0, tm_...

2019-01-21 15:35:44 146

原创 python3之路 基础-生成器、迭代器

列表生成式在总结迭代器、生成器先总结一个小知识【列表生成式】#第一种生成列表方法a = [1,2,3,4,5]#第二种生成列表方法[i for i in range(1,6)]#灵活的体现[func(i) for i in range(1,6)]上面两个列表的结果是一样的,但是第二种会更加灵活,而且是代码更简洁。这就是列表生成式。生成器通过列表生成式,我们可以直接创建一个列表...

2019-01-18 10:47:31 118

原创 python3之路 基础-装饰器

疑问有没有一种方式,在不改变代源码、不改变调用方式的情况下,对函数增加功能。添加一些我们需要的方法、逻辑。这时候装饰器就出现了。装饰器,看其名知其意。在不改变原有结构的情况下,让其本身具有之前不具有的功能。实现装饰器的知识储备:函数即“变量”高阶函数嵌套函数装饰器= 高阶函数 + 嵌套函数装饰器定义:装饰器本质是函数(装饰其他函数)就是为其他函数添加附加功能。原则:1、...

2019-01-17 18:31:35 198

原创 英语之路 基础2

实意动词实意动词的否定、提问、回答疑问词的否定、提问、回答疑问词的否定、提问、回答扩展1. 实意动词回顾:be动词主要是联系作用,在句子当中没有实际意义实意动词:在实际语句中有实际意义come、read、go、watch、play、flyHe comes from ShangHai【他来自上海】comes 是因为:主语是第三人称单数语句是一般现在时符合这...

2019-01-14 23:01:56 271

原创 python3之路 基础-函数

函数基本语法及特性函数是什么?函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的,具体区别,我在后面会讲解到,编程中的函数在英文中也有很多不同的叫法。在BASIC中叫做subroutine(子过程或子程序),在Pascal中叫做procedure(过程)和function,在C中只有function,在Java里面叫做method。【定义: 函数是指将一组语句的集合...

2019-01-14 19:06:30 211

原创 python3之路 基础-字符编码

字符编码字符编码一直是编程过程中比较头疼的一件事,ascii、unicode、gbk、utf-8等一些个字符集到底是什么意思呢?asciiASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2*...

2019-01-14 18:14:51 123

原创 英语之路 基础1

语序和五种基本句式S + V 【主 + 谓】S + V + P 【主 + 系 + 表】S + V +O 【主 + 谓 + 宾】S + V + o + O 【主 + 谓 + 间宾 + 直宾】S + V + O + C 【主 + 谓 + 宾 + 宾补】那么这里主、谓、系、表、宾、间宾、直宾、宾补是什么意思呢?主:一句户话的主体谓:主体执行的动作系:联系作用的动词表:描述主体的...

2019-01-14 16:55:43 304

原创 python3之路 基础-文件操作

文件操作在我们开发中,有很多种情况会使用到文件的操作,为什么要使用文件操作呢?我们的数据可以存放在内存,硬盘上。当我们使用变量来接受数据时,变量会存放在内存中,但是如果有意外发生,比如断电了、宕机了,那我们的数据就会丢失,这时候我们选择将数据存放在磁盘中。存在磁盘中,我们就要对文件进行操作,那我们如何操作呢?对文件操作流程【读】打开文件,得到文件句柄并赋值给一个变量通过句柄对文件进行...

2019-01-14 16:53:55 175

原创 SMP、NUMA、MPP体系结构介绍

从系统架构来看,目前的商用服务器大体可以分为三类,即对称多处理器结构 (SMP : Symmetric Multi-Processor) ,非一致存储访问结构 (NUMA : Non-Uniform Memory Access) ,以及海量并行处理结构 (MPP : Massive Parallel Processing) 。它们的特征分别描述如下:1. SMP(Symmetric Multi-...

2019-01-11 16:42:33 291 1

空空如也

空空如也

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

TA关注的人

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