自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(114)
  • 资源 (2)
  • 收藏
  • 关注

原创 单链表逆序

单链表逆序

2022-07-12 18:49:28 244 1

原创 递归方法求数组中最大值

递归算法求数组中最大值

2022-06-28 09:38:59 394

原创 python3用mysqlclient连接mysql数据库操作问题

下载依赖pip install mysqlclient数据库中的原数据编写测试代码import MySQLdbcon = MySQLdb.connect(host='localhost', port=3306, user='root', passwd="root", db='cdh', .

2021-10-12 17:24:17 533 1

原创 Hive 中子查询VS条件过滤.

基于Hive 2.1.x首先直接做关联,查看执行计划-- 先连接后过滤explain select count(1)from student t1 inner join student t2 on t1.id = t2.id and t2.name = 'shanghai'where t1.city = 'beijing';1 STAGE DEPENDENCIES:2 Stage-5 is a root stage3 Stage-2 depends on stages: S

2021-10-01 10:52:57 507

原创 Spark 及 Hive 中的 Union 猜想(有待更详细验证)

Hive 2.x-- 这句sql在hive中是无法执行的。explain select id,id from peopleunionselect id,id from people报错:查看近似sql的查询计划。Hive在使用union时,自动做了group byexplain select city from test.studentunionselect name from test.citys;结合:explain select city from test.studen

2021-09-28 16:39:13 202

原创 Bucket join 用户指南

Bucket join 用户指南什么时候我们需要一个bucket table?如果表满足以下条件,则考虑将其构建为桶表:table很大,例如,table size 超过500GB对于小表来说,只有当它用来与一个巨大的桶表连接时,才会出现这种情况。Sort Merge Join慢的原因是因为shuffle,而不是数据倾斜如何选择桶字段?如果你真的需要构建一个bucket table,在大多数情况下,你不需要。选择正确的keys ,with high cardinality可以均匀分布

2021-08-20 17:45:39 811

原创 scala 中 与类相关操作

类简单类和无参方法Scala类最简单的形式看上去和Java中的很相似class Counter { private var value = 0 //字段必须初始化 def increment() { //方法默认是公有的 value += 1 } def current() = value}Scala中类并不申明为public。Scala源文件可以包含多个类,所有这些类都具有公有可见性。使用类要做的是构造对象并按照通常的方法来调用方法:val myCounter = new

2021-06-29 10:14:34 169

原创 Scala中的映射和元组

映射和元组映射是键值对偶的集合。Scala中通用叫法为元组,n个对象的聚集,这些对象并不一定必须是相同类型的。对偶为一个n=2的元组。构造映射//scala 映射构造val scores = Map("Alice" -> 10,“Bob” -> 3 , "Cindy" -> 8 )这是一个不可变的Map[String,Int],其值不能改变。//创建可变映射val scores = scala.collection.mutable.Map("Alice" -> 10,

2021-06-28 09:26:55 244 1

原创 Scala - 数组相关操作

数组相关操作定长数组不变数组。使用Scala中的Array.val nums = new Array[Int](10) //初始化为0val a = new Array[String](10) //初始化为nullval s = Array("Hello","World") //长度为2的Array[String] - 类型是推断出来的。说明:当已提供初始值时,就不需要new了s(0) = "Goodbye" // 使用()而不是[]来访问元素Jvm中,Scala的Array以Java数组方

2021-06-25 14:29:42 240 1

原创 Scala 中的结构控制和函数

结构控制和函数条件表达式scala中的if/else表达式有值。这个值就是跟在if或else之后的表达式的值。可以将表达式的值进行复制val s = if(x > 0) 1 else -1等同于Java中的三元表达式。x > 0 ? 1 : -1。但不能在 ? : 表达式中插入语句。如果两个分支的类型不同,则会用两个分支类型的公共超类型。比如:if (x > 0) “positive” else -1 。一个String,一个Int。公共超类型是Any如果else部分缺失,

2021-06-24 15:18:39 192

原创 Scala中的一些基础

Scala 2.12.x基础"读取-求值-打印"循环(read-eval-print loop),即REPL。变量申明val/var申明变量:val:定义一个常量,无法改变它的内容var:申明一个其值可变的变量常用类型Scala七种数值类型:ByteCharShortIntLongFloatDoubleBooleanScala并不刻意区分基本类型和引用类型。可以对数字执行方法。1.toString() //字符串"1"1.to(10) //Range(1,2,3

2021-06-23 10:59:46 113

原创 Java8 中Lambda表达式实战

1.传递代码新建一个类,继承Comparator接口,复写compare方法。public class AppleComparator implements Comparator<Apple> { public int compare(Apple a1, Apple a2){ return a1.getWeight().compareTo(a2.getWeight()); }}inventory.sort(new AppleComparator());...

2021-06-03 17:21:39 149

原创 Kafka Consumer 消费 多线程vs多实例

Kafka Consumer消费性能提升针对一下两种方案进行对比,并通过代码检验。1. 方案一在同一个Consumer Group中,创建多个Consumer,增加消费者性能。创建Topicbin/kafka-topics.sh --create --zookeeper master:2181 --replication-factor 1 --partitions 10 --topic mul_consumer_10表格中展示出不同Consumer实例下的执行结果:Consume

2021-03-23 16:54:11 2386

原创 Centos 7.6 下的磁盘挂载(基于阿里云)

Centos 7.6 下的磁盘挂载(基于阿里云)1. 查看是否有可挂载磁盘fdisk -l这里我们发现 /dev/sda 磁盘还未进行挂载2. 磁盘格式化fdisk /dev/sda不输入值的话,直接回车,使用默认值。3. 创建分区mkfs.ext4 /dev/sda14. 挂载分区创建目录 mkdir /data挂载 mount /dev/sda1 /data5.写入fstab,让系统启动自动挂载vim /etc/fstab/dev/s

2021-03-17 10:27:53 786

原创 Kafka 性能测试

Kafka 性能测试(基于Kafka 2.2.1版本)Producer 测试1. 不同压缩算法对数据发送性能的影响测试命令3 broker , 2 replication , numRecords 500w , throughput 100w , recordSize 256bytebin/kafka-producer-perf-test.sh --producer-props bootstrap.servers=master:9092 compression.type=none --top

2021-03-09 18:55:32 631

原创 Kafka - Log Segment read方法解析

Log Segment read 方法源码解析read方法执行流程图:第一步:查找索引确定读取物理文件位置val startOffsetAndSize = translateOffset(startOffset)/** * Find the physical file position for the first message with offset >= the requested offset. 查找偏移量>=请求的偏移量的第一条消息的物理文件位置。 * *

2021-02-26 10:59:12 258

原创 Kafka LogSegment append方法源码解读

Log Segment的源码解析Kafka日志在磁盘上的组织架构:LogSegment 的 append写入流程图第一步:判断当前日志段是否为空val physicalPosition = log.sizeInBytes() //当前日志段位移if (physicalPosition == 0) //如果是空,记录用于切分日志段依据 rollingBasedTimestamp = Some(largestTimestamp) // largestTimestamp: Long, 当前这批消

2021-02-25 18:32:32 275

原创 Flink - Table API UDF --- 用户自定义函数

函数 (Functions)Flink Table API 和 SQL 为用户提供了一组用于数据转换的内置函数SQL中支持的很多函数,Table API和SQL 都已经做了实现比较函数SQL:value1 = value2value1 > value2Table APIANY1 === ANY2ANY1 > ANY2逻辑函数SQL:boolean1 OR boolean2boolean IS FALSENOT booleanT

2021-02-13 01:39:37 287

原创 Flink - Table API 之 window (窗口)

窗口时间语义,要配合窗口操作才能发挥作用在Table API 和 SQL 中,主要有两种窗口Group Window(分组窗口)根据时间或行计数间隔,将行聚合到有限的组(Group)中,并对每个组的数据执行一次聚合函数Over Windows针对每个输入行,计算相邻范围内的聚合Group WindowsGroup Windows是使用window(w:GroupWindows)子句定义的,并且必须由as子句指定一个别名为了按窗口对表进行分组,窗口的别名必须在group

2021-02-12 21:57:05 2030 1

原创 Flink - Table API 动态表及时间语义

动态表动态表是Flink对流数据的Table API 和 SQL支持的核心概念.与表示批处理数据的静态表不同,动态表是随时间变化的.持续查询动态表可以像静态的批处理表一样进行查询,查询一个动态表会产生持续查询(Continuous Query)连续查询永远不会停止,并会生成另一个动态表查询会不断更新其动态结果表,以反映其动态输入表上的更改动态表和持续查询流式表查询的处理过程:流被转换为动态表对动态表计算连续查询,生成新的动态表生成的动态表被转换回流将流

2021-02-09 18:17:03 338

原创 Flink -Table API 中 和DataStream 互相转换

将Table转换成DataStream表可以转换为DataStream或DataSet,这样自定义流处理或批处理程序就可以继续在Table API或SQL 查询的结果上运行了将表转换为DataStream或DataSet时,需要制定生成的数据类型,既要将表的每一行转换成的数据类型表作为流式查询的结果,是动态更新的转换有两种转换模式:追加(Append)模式和撤回(Retract)模式追加模式(Retract Mode)用于表只会被插入(Insert)操作更改的场景Dat

2021-02-09 18:15:52 1804

原创 Flink - Table API 处理后数据 输出到不同组件

更新模式对于流式查询,需要声明如何在表和外部连接器之间执行转换与外部系统交换的消息类型,由更新模式(Update Mode)指定追加(Append)模式表只做插入操作,和外部连接器只交换插入(insert)消息撤回(Retract)模式表和外部连接器交换添加(Add)和撤回(Retract)消息插入操作(insert)编码为Add消息;删除(Delete)编码为Retract消息;更新(Update)编码为上一条的Retract和下一条的Add消息更新(Upsert)插入模式

2021-02-09 17:45:41 269

原创 Flink - Table API 快速入门操作

Flink Table API Flink SQLTable API Flink SQLFlink 对批处理和流处理,提供了统一的上层APITable API是一套内嵌在Java和Scala语言中的查询API,它允许以非常直观的方式组合来自一些关系运算符的查询Flink 的SQL 支持基于实现了SQL标准的Apache CalciteApache Flink 有两种关系型 API 来做流批统一处理:Table API 和 SQL。Table API 是用于 Scala 和 Java 语言的查

2021-02-07 20:14:25 1589 2

原创 Flink - 状态一致性

Flink - 状态一致性什么是状态一致性有状态的流处理,内部每个算子任务都可以有自己的状态对于流处理器内部来说,所谓的状态一致性,其实就是我们所说的计算结果要保证准备。一条数据不应该丢失,也不应该重复计算在遇到故障时可以恢复状态,恢复以后的重新计算,结果应该也是完全正确的。状态一致性分类AT-MOST-ONCE(最多一次)当任务故障时,最简单的做法是什么都不干,即不恢复丢失的状态,也不重播丢失的数据。At-most-once语义的含义是最多处理一次事件。AT-LEAST-O

2021-02-07 14:04:28 231

原创 Kafka -- 异步通信原理

异步通信原理1.1 观察者模式观察者模式(Observer),又叫发布-订阅模式(Publish/Subscribe)定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知。1.2 生产者消费者模式传统模式生产者直接将消息传递给指定的消费者耦合性特别高,当生产者或者消费者发生变化,都需要重写业务逻辑。生产者消费者模式通过一个容器来解决生

2021-02-06 13:13:51 550

原创 Flink 容错机制

Flink 容错机制一致性检查点(checkpoint)Flink 故障恢复机制的核心,就是应用状态的一致性检查点有状态流应用的一致检查点,其实就是所有任务的状态,在某个时间点的一份拷贝(一份快照);这个时间点,应该是所有任务都恰好处理完一个相同的输入数据的时候从检查点恢复状态在执行流应用程序期间,Flink会定期保存状态的一致检查点如果发生故障,Flink将会使用最近的检查点来一致恢复应用程序的状态,并重新启动处理流程遇到故障之后,第一步就是重启应用第二步是从chec

2021-02-05 16:12:21 153

原创 初始 - Flink Processing Function API

Flink Processing FunctionFlink API 最底层的抽象为有状态实时流处理。其抽象实现是 Process Function,并且 Process Function 被 Flink 框架集成到了 DataStream API 中来为我们使用。它允许用户在应用程序中自由地处理来自单流或多流的事件(数据),并提供具有全局一致性和容错保障的状态。此外,用户可以在此层抽象中注册事件时间(event time)和处理时间(processing time)回调方法,从而允许程序可以实现复杂计

2021-02-05 10:42:02 144

原创 初识数据湖 - 科普

什么是数据湖?一种支持任意数据格式、并保留原始数据内容的 大规模存储系统架构,并且其支持海量数据的分析处理。大规模存储系统架构 支持任意数据格式的输入,并做到集中存储 能够保留海量的原始数据 支持海量数据分析处理数据湖的命名(Data Lake)是比较贴合其实际意义的。数据湖应该做到:集中存储 支持任意数据格式输入等这样需求就像是:无论大小河流(任意格式)均可将水汇入湖泊中(集中存储)。我们可以认为数据湖就是一个巨大的数据集合,汇聚了来自各个系统的任意格..

2021-02-04 15:10:30 294 3

原创 Flink - 状态管理

Flink状态管理flink中的状态由一个任务维护,并且用来计算某个结果的所有数据,都属于这个任务的状态。可以认为状态就是一个本地变量,可以被任务的业务逻辑访问Flink 会进行状态管理,包括状态一致性,故障处理以及高效存储和访问,以便开发人员可以专注于应用程序的逻辑。在flink中,状态始终与特定算子相关联为了使运行时的flink了解算子的状态,算子需要预先注册其状态。总的来说有两种类型的状态:算子状态(Operatior State)算子状态的作用范围限定为算子任务键控

2021-02-03 23:40:31 105

原创 Flink 时间语意

Flink 时间语意flink 中的时间语意设置Event TimeWatermarkwatermark的传递,引入和设定Event Time:时间创建的时间Ingestion Time:数据进入flink的时间Processing Time:执行操作算子的本地系统时间,与机器相关不同的时间语义有不同的应用场合我们往往更关心事件时间(Event Time)某些应用场合,不应该使用Processing TimeEvent Time 可以从日志数据的时间戳(timestamp)

2021-02-03 09:45:26 522 2

原创 Flink - Window 操作学习

Window API窗口分配器 ------ window() 方法使用.window来定义一个窗口,然后基于这个window去做一些聚合或者其它处理操作。主要window()方法必须在keyBy之后才能用。Flink提供了更加简单的.timeWindow和.countWindow方法,用于定义时间窗口和计数函数。DataStrean<Tuple2<String,Double>> minTempWindowStream = dataStream .map(new M

2021-02-01 23:14:57 165

原创 Flink - Sink

Flink - Sink在说sink前,我们提一句flink数据传输重分区,也是DataStream内所拥有方法。shuffle:设置DataStream的分区,以便输出元素随机地均匀地移至下一个操作。keyby:创建一个新的KeyedStream,使用提供的key进行分区global:设置DataStream的分区,以便输出值全部转到下一个处理运算符的第一个实例。用这个请小心设置,因为这可能会导致严重的性能瓶颈在应用程序中.rebalance:设置DataStream的分区,以便输出元素以轮询

2021-01-27 22:48:17 593

原创 Flink -- 支持数据类型/UDF函数

Flink 支持的数据类型Flink 流应用程序处理的是以数据对象表示的事件流。所以在Flink内部,我们需要能够处理这些的对象,他们需要被序列化和反序列化,以便通过网络传送他们,或者从状态后端,检查点和保存点读取他们。为了有效地做到这一点,Flink需要明确知道应用程序所处理的数据类型.Flink使用类型信息的概念来表示数据类型,并为每个数据类型生成特定的序列化器,反序列化器和比较器。Flink还具有一个类型提取系统,该系统分析函数的输入和返回类型,以自动获取类型信息。从而获得序列化器和反序列化器。但

2021-01-24 23:41:29 497

原创 Flink 常见 Transform

Flink Transform以下是flink中常见的一些transformmap// 创建执行环境StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();// 加载数据源 DataStream<String> datas = env.readTextFile("data/words.txt");// map transform 转换

2021-01-23 22:00:30 361

原创 Flink Transform KeyBy - max 使用案例

我们使用maven构建项目,在pom.xml中导入坐标.要注意,这里我们导入的scala版本和我们本机安装的scala版本一定要保持一致。 <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <flink.version>1.12.0</flink.version> <target.java.version>1.8&

2021-01-22 10:27:20 238

原创 Flink 添加不同数据源代码

Flink 数据源首先我们需要到导入flink的开发依赖包我们基于Maven的pom.xml构建flink本地开发项目<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/m

2021-01-20 16:59:23 609

原创 Spark 共享变量

什么是闭包?闭包就是一个封闭的作用域, 也是一个对象 Spark 算子所接受的函数, 本质上是一个闭包, 因为其需要封闭作用域, 并且序列化自身和依赖, 分发到不同的节点中运行累加器全局累加器Accumulators(累加器) 是一个只支持added(添加) 的分布式变量, 可以在分布式环境下保持一致性, 并且能够做到高效的并发.原生 Spark 支持数值型的累加器, 可以用于实现计数或者求和, 开发者也可以使用自定义累加器以实现更高级的需求.val counter =...

2021-01-19 19:48:10 222

原创 Spark - 缓存使用

Spark缓存使用缓存解决的问题减少对重复RDD的多次操作 容错适用场景:在一个 RDD 需要重复多次利用, 并且还不是特别大的情况下使用, 例如迭代计算等场景.Spark缓存相关的APIval conf = new SparkConf().setMaster("local[6]").setAppName("debug_string")val sc = new SparkContext(conf)val interimRDD = sc.textFile("dataset/acce

2021-01-13 14:39:18 402

原创 初识Impala - 快速入门

Impala​ impala 是 cloudera 提供的一款高效率的 sql 查询工具,提供实时的查询效果,官方测试性能比 hive 快 10 到 100 倍,其 sql 查询比 sparkSQL 还要更加快速, 号称是当前大数据领域最快的查询 sql 工具。​ impala 是参照谷歌的新三篇论文(Caffeine–网络搜索引擎、 Pregel–分布式图计算、 Dremel–交互式分析工具)当中的 Dremel 实现而来,其中旧三篇论文分别是(BigTable, GFS, MapRedu

2021-01-10 21:19:27 277

原创 Apache Beam WordCount案例编写

在pom.xml 中 导入maven依赖<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <

2021-01-08 18:02:36 209

python cookbook(第3版)中文版

Python Cookbook(第3版)中文版 经典Python图书全新升级版本 初中级Python程序员晋级必备图书 涵盖Python 3.3 包含大量实用Python编程技巧 囊括常见Python编程领域 [美] 大卫·比斯利(David Beazley),布莱恩·K.琼斯(Brian K.Jones) 著,陈舸 译

2019-04-25

C语言速成PPT

C语言速成入门级PPT,可以帮助读者快速了解C语言的语法规范。

2018-10-23

空空如也

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

TA关注的人

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