- 博客(49)
- 资源 (1)
- 收藏
- 关注
原创 将proto文件转成java代码
proto文件是谷歌公司内部的混合语言数据标准,目前是一种比较流行的数据传输格式,本文档就是将相关的proto定义的数据格式通过proto编译器,将相关proto文件转化为java文件,在java项目开发中用来进行数据解析。
2024-11-19 14:46:03
790
原创 flink学习-flink sql
在flink的数据处理中,数据流是源源不断的,是无界的,所以对于flink处理的数据表是一张动态表,所以对于动态表的查询也是持续的,每接收一条新数据会进行一次新的查询。
2024-06-18 10:55:00
420
原创 flink学习-容错机制
在flink中最重要的容错机制,就是checkpoint机制,使用checkpoint可以将之前某个时间点的所有的状态进行保存,这个存档就是checkpoint。
2024-06-13 13:41:45
533
原创 flink学习-状态管理
在flink中,算子可以分为无状态和有状态两种情况。无状态的算子只需要观察每个独立事件,根据当前输入的数据直接输出结果。像:filter、flatMap、map都属于无状态的算子。有状态的算子则是除当前数据之外,还需要一些其他数据来计算结果。这里说的其他数据其实就是指状态,聚合算子,窗口算子都应该算是有状态的算子。状态也可以分为两种,一种是算子状态,一种是按键分区状态(只有进行key 进行分组的)
2024-06-11 11:23:59
429
原创 flink学习-处理函数
处理函数就是在进行数据处理的算子,process算子,因为process的使用相对来说非常灵活,这个算子可以说是包含了所有的解决方案,其余向filter等算子的底层实现也是通过调用process算子实现的,针对不同的场景可以实现不同的process抽象类。
2024-06-09 15:53:08
307
原创 flink学习-数据流join
数据流join前提,首先第一要在key by的时候可以分到同一个算子中,另外数据应该落在同一个窗口中才能完成join,输出结果则是匹配上的数据(在匹配结果上而言,与join相似)
2024-06-07 10:01:31
223
原创 flink学习-窗口计算
窗口一般有时间窗口和数量的窗口。时间窗口一般指一段时间范围内进行数据,flink中窗口并不是静态准备好的,而是动态创建的,当窗口区间范围有数据到达是,才会开始创建对应的窗口。
2024-05-29 11:19:40
228
原创 flink学习-基础编程
一般对于一个flink任务有四个步骤:获取执行环境 -> source(源算子)-> transformation(转换操作)->sink(输出)
2024-05-28 17:15:13
294
原创 图数据库学习HugeGraph-25:执行统计与分析
TraversalStrategy是“遍历策略”,可以在编译期分析遍历(Traversal)的组成,并在遍历满足TraversalStrategy的条件时对遍历进行修改。explain(),详细描述原始的Gremlin语句在编译期是如何转变为最终要执行的step集合的。profile(),统计Gremlin语句执行过程中的每个step消耗的时间和通过的对象等统计信息。Provider optimization,图数据库实现级别的策略。Finalization,遍历执行前的调整和清理策略。
2024-05-15 11:14:41
176
原创 图数据库学习HugeGraph-24:附加操作sideEffect
group(string)、groupCount(string)、subgraph(string)、aggregate(string)、inject(string)、profile(string)等。在进行图遍历时,可以在路径中做一些额外的附加操作,这个附加操作不会改变上一步的结果,会原封不动的传递到下一步去。附加操作看起来就像透明的,但实际上可以将附加操作的处理结果存储到外部变量中去。sideEffect(): 在某个位置插入一个附加操作,以执行额外的操作,通常可与store、sack等配合使用。
2024-05-15 11:11:04
181
原创 图数据库学习HugeGraph-23:转换操作map/flatMap
map 操作是是在遍历器中将元素映射(转化)成另一个类型的某个对象(1对1),进行后续处理。flatMap 则是 1对多。
2024-05-15 11:08:25
321
原创 图数据库学习HugeGraph-22:遍历终止terminal
Gremlin 中有一类特殊的操作,它能够终止遍历器的“遍历”行为,使其执行并返回结果。在这里要强调的一点:原生的 Gremlin 语句通常都是用遍历器连接起来的,但其实这些连接的过程并不会执行 Gremlin 语句,只有走到了terminalStep 时才会执行。这是 Tinkerpop 的 Gremlin 解析引擎对遍历器对象调用了一个IteratorUtils.asList()方法,又调用了它内部的fill()方法(注意:不是上面讲到的fill()Step)。
2024-05-15 11:00:43
301
原创 图数据库学习HugeGraph-21:局部操作local
另外,有一些step默认的操作是针对对象流中的全部对象,但也可以通过参数来改变默认操作,允许针对对象流中的单个对象进行操作,包括count(),max(),mean(),min(),sum(),order(),tail(),limit(),range(),sample(),skip()和dedup()等。很多操作是针对传递过来的对象流中的全部对象进行操作,但也有很多时候需要针对对象流中的单个对象而非对象流中的全部对象进行一些操作。这种对单个对象的局部操作,可以使用local()语句实现。
2024-05-15 10:55:40
155
原创 图数据库HugeGraph学习-20:遍历栅栏barrier
Gremlin在路径遍历的时候,可以将栅栏barrier插入到懒加载的遍历流水线中,以使得barrier之前的步骤都执行完成之后再继续往下执行。barrier(): 在某个位置插入一个栅栏,以强制该位置之前的步骤必须都执行完成才可以继续往后执行,比如g.V().both().barrier().both()只有在第一个both()全部完成之后才会执行第二个both()。参考:https://blog.youkuaiyun.com/javeme/article/details/89182912。
2024-05-15 10:48:36
203
原创 图数据库HugeGraph学习-19:结果存取口袋sack
此外在放入数据到口袋的时候,还可以做一些灵活的操作比如:分裂(split)、合并(merge)等。sack相关step属于Gremlin语言里面的高级操作,在处理较为复杂的任务时可以灵活的实现一些特殊功能。withSack(): 创建一个口袋,并给定一个初始结构,比如可以是一个返回Map或者随机数的lambda函数,也可以是一个对象或常数;另外还可以提供lambda分裂函数,以指定当traverser分裂时的行为,比如进行clone操作。当传入lambda合并函数作为参数时,可指定放入口袋的行为如何执行;
2024-05-15 10:44:18
212
原创 图数据库HugeGraph学习-18:随机过滤与注入
gremlin支持在遍历器上结果进行采样或者是做随机过滤。sample: 接受一个整数值,从前一步的遍历器中采样(随机)出最多指定数目的结果;coin: 字面意思是抛硬币过滤,接受一个浮点值,该浮点值表示硬币出现正面的概率。coin Step 对前一步的遍历器中的每个元素都抛一次硬币,出现正面则可以通过,反面则被拦截。注入说明Gremlin允许在遍历器中注入一些默认值或自定义值,比如在分支 Step 中给 else 路径的元素一个默认值,又或者在遍历器过程中人为地加上一些额外的元素。
2024-05-15 10:35:13
337
原创 图数据库HugeGraph学习-17:模式匹配
match()语句为图查询提供了一种基于“模式匹配”的方式,以便用更具描述性的方式进行图查询。match()语句通过多个模式片段traversal fragments来进行模式匹配。这些traversal fragments中会定义一些变量,只有满足所有用变量表示的约束的对象才能够通过,并被放到一个Map<String, Object>中,其中map的key为变量名(label),value为顶点、边、路径或者属性。match()语句的格式为:match(Traversal…)。
2024-05-15 10:26:06
483
原创 图数据库HugeGraph学习-16:结果聚集与展开
将在图中进行查询时,将某一步的结果都收集到一个集合中,以备在后续步骤中使用,此外还可能在后续需要的时候将聚集的结果进行展开。
2024-05-15 10:17:49
232
原创 图数据库HugeGraph学习-15:合并
optional: 只能接受一个遍历器(traversal),如果该遍历器能产生一个结果,则返回该结果,否则返回调用optionalStep的元素本身。原文链接:https://blog.youkuaiyun.com/u010260089/article/details/82837664。coalesce: 可以接受任意数量的遍历器(traversal),按顺序执行,并返回第一个能产生输出的遍历器的结果;union: 可以接受任意数量的遍历器(traversal),并能够将各个遍历器的输出合并到一起;
2024-05-15 09:56:55
208
原创 图数据库HugeGraph学习-14:分支
在对图进行遍历分析时,有时需要根据某些条件对当前的对象集合进行不同的操作,也就是if-then-else语法结构。Gremlin中有一类step可以满足这种分支需求,这组step叫做branch step。branch()是这类step的基础,比较抽象,而choose()是典型的branch step。
2024-05-14 20:46:33
1581
原创 图数据库HugeGraph学习-12:数学计算
exp: euler’s number raised to the power (e^x),以e为底的指数。log: logarithmus naturalis (base e),以e为底的对数。log10: logarithm (base 10),以10为底的对数。log2: logarithm (base 2),以2为底的对数。cosh: hyperbolic cosine,双曲余弦。sinh: hyperbolic sine,双曲正弦。asin: arc sine,反正弦。
2024-05-14 20:26:33
165
原创 图数据库HugeGraph学习-11:统计运算
Gremlin可以在Number类型的流(遍历器)上做简单的统计运算,包括计算总和、最大值、最小值、均值。
2024-05-14 20:23:36
200
原创 图数据库HugeGraph学习9:条件过滤
通常我们都是基于筛选来选取我们需要的数据,在对图进行遍历分析的时候,经常需要满足一定条件进行对象过滤。where() 就是用来过滤遍历过程中当前阶段的对象。另一方面,predicate就是过滤使用的判断条件,包含关系运算和区间判断等,只有满足判断条件的对象才能通过进入下一轮或者作为结果。
2024-05-14 20:10:14
197
原创 图数据库HugeGraph学习-8:数据分组去重
数据分组对应SQL数据中常见的group by的操作,从某个维度上对拥有相同的 点进行分组,比如根据年龄分组,根据出生省份分组等。数据去重则是为了去除结果集中的相关的元素,去除在某个维度上相同的数据。
2024-05-14 11:09:25
338
原创 图数据库HugeGraph学习-7 查询结果排序
与sql数据库中最后我们在输出展示结果时,常常会限制输出的条数,或者是限制输出展示的顺序等操作,同样的Gremlin也是允许对图查询结果进行排序输出的,可以指定某个属性的升序、降序或者是随机序的方式输出。
2024-05-14 10:38:45
174
原创 图数据库学习HugeGraph5:查询路径
在使用Gremlin对图进行分析时,关注点又是并不仅仅在最终到达的顶点、边或者属性上,通过怎样的路径到达最终的顶点、边和属性同样重要。此时查询路径就极为重要。path()返回当前遍历过的所有路径。有时需要对路径进行过滤,只选择没有环路的路径或者选择包含环路的路径,Gremlin针对这种需求提供了两种过滤路径的step:simplePath()和cyclicPath()。
2024-05-13 20:28:49
319
原创 flink学习-7(parallelism and slot)
parallelism是flink中并行度,用以提高flink任务job的执行效率,可以通过调整配置提高flink任务中并行度。
2024-04-30 16:08:52
259
3
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人