- 博客(54)
- 收藏
- 关注
原创 使用 Hive SQL 的 LEAST 函数:找到最小值的神器
LEAST 函数是 Hive SQL 提供的一种方便的方法,用于从一组值中找到最小的那个。无论你是在处理学生的成绩、商品的价格,还是其他需要比较的数值,LEAST 函数都能快速帮你找到最小值。希望这篇博文能帮你更好地理解和使用 Hive SQL 的 LEAST 函数,使你的数据处理更加高效、简洁。, valueN 可以是列名、常数或表达式,LEAST 函数将返回这些值中最小的那一个。多列比较: LEAST 函数可用于多列(或表达式)的比较,可以大大简化SQL语句的复杂度。LEAST 函数的语法。
2024-07-12 14:48:02
483
原创 实习日记(一)
总之刚开始在做采购的需求时我头都大了,因为从来没接触过采购方面的知识,第一次了解到采购也是一家公司的重中之重,所以为了更好的快速上手工作,我专门找了一本讲解采购的书籍,如果对采购有兴趣的话也可以读一下,很推荐《采购是个技术活:如何做专业采购》
2024-06-18 17:50:38
264
原创 SQL窗口函数大小详解
OVER 子句中的 frame_clause 选项用于指定一个滑动的窗口。窗口总是位于分区范围之内,是分区的一个子集。指定了窗口之后,分析函数不再基于分区进行计算,而是基于窗口内的数据进行计算。第一个窗口使用 ROWS 选项,包含了前后各 1 行以及当前行;第二个窗口使用 RANGE 选项,包含了当前行的数值减去 1(4-1=3)到当前行的数值加上 1(4+1=5)之间的所有数据;其中,ROWS 表示以行为单位计算窗口的偏移量;M FOLLOWING,窗口到当前行之后的第 M 行、范围 M 之内结束;
2024-01-03 22:48:52
595
原创 理解SQL中not in 与null值的真实含义
当你判断任意值a!= null时, 官方说, “You cannot use arithmetic comparison operators such as =, <, or <> to test for NULL”, 任何与null值的对比都将返回null. 因此返回结果为否,这点可以用代码 select if(1 = null, ‘true’, ‘false’)证实.A not in B的原理是拿A表值与B表值做是否不等的比较, 也就是a!= b. 在sql中, null是缺失未知值而不是空值。
2024-01-01 21:20:16
778
1
原创 Kafka下沉到HDFS报错
24 十二月 2023 12:38:25,127 INFO [SinkRunner-PollingRunner-DefaultSinkProcessor] (org.apache.flume.sink.hdfs.HDFSCompressedDataStream.configure:64) - Serializer = TEXT, UseRawLocalFileSystem = false。
2023-12-24 13:19:48
765
原创 FlinkSQL
当流中有新数据到来,初始的表中会插入一行;而基于这个表定义的SQL查询,就应该在之前的基础上更新结果。这样得到的表就会不断地动态变化,被称为“动态表”(Dynamic Tables)。动态表是Flink在Table API和SQL中的核心概念,它为流数据处理提供了表和SQL支持。我们所熟悉的表一般用来做批处理,面向的是固定的数据集,可以认为是“静态表”;而动态表则完全不同,它里面的数据会随时间变化。
2023-12-20 15:10:56
1173
原创 Flink和Kafka连接时的精确一次保证
既然是端到端的exactly-once,我们可以从三个组件的角度来进行分析:(1)Flink内部Flink内部可以通过检查点机制保证状态和处理结果的exactly-once语义。(2)输入端输入数据源端的Kafka可以对数据进行持久化保存,并可以重置偏移量(offset)。所以我们可以在Source任务(FlinkKafkaConsumer)中将当前读取的偏移量保存为算子状态,写入到检查点中;
2023-12-19 16:51:40
656
原创 Flink-容错机制checkpoint
随时存档”确实恢复起来方便,可是需要我们不停地做存档操作。如果每处理一条数据就进行检查点的保存,当大量数据同时到来时,就会耗费很多资源来频繁做检查点,数据处理的速度就会受到影响。所以在Flink中,检查点的保存是周期性触发的,间隔时间可以进行设置。
2023-12-19 16:49:45
1073
原创 Flink-状态后端
状态后端是一个“开箱即用”的组件,可以在不改变应用程序逻辑的情况下独立配置。Flink中提供了两类不同的状态后端,一种是“哈希表状态后端”(HashMapStateBackend),另一种是“内嵌RocksDB状态后端”(EmbeddedRocksDBStateBackend)。如果没有特别配置,系统默认的状态后端是HashMapStateBackend。
2023-12-19 16:34:08
702
原创 Flink-水位线和时间语义
在实际应用中,事件时间语义会更为常见。一般情况下,业务日志数据中都会记录数据生成的时间戳(timestamp),它就可以作为事件时间的判断基础。在Flink中,由于处理时间比较简单,早期版本默认的时间语义是处理时间;而考虑到事件时间在实际应用中更为广泛,从Flink1.12版本开始,Flink已经将事件时间作为默认的时间语义了。
2023-12-16 16:44:14
963
原创 Flink窗口的概念和分类
Flink是一种流式计算引擎,主要是来处理无界数据流的,数据源源不断、无穷无尽。想要更加方便高效地处理无界流,一种方式就是将无限数据切割成有限的“数据块”进行处理,这就是所谓的“窗口”(Window)。注意:Flink中窗口并不是静态准备好的,而是动态创建——当有落在这个窗口区间范围的数据达到时,才创建对应的窗口。另外,这里我们认为到达窗口结束时间时,窗口就触发计算并关闭。
2023-12-16 12:18:43
483
原创 MySQL-DATE_FORMAT()函数
在 SQL 中,DATE_FORMAT() 函数是用于将日期时间值格式化为指定格式的函数。它允许你根据自己的需求将日期时间值转换成各种不同的字符串表示形式。
2023-12-08 14:08:56
941
原创 Flink基本转换算子map/filter/flatmap
map是大家非常熟悉的大数据操作算子,主要用于将数据流中的数据进行转换,形成新的数据流。简单来说,就是一个“一一映射”,消费一个元素就产出一个元素。我们只需要基于DataStream调用map()方法就可以进行转换处理。方法需要传入的参数是接口MapFunction的实现;返回值类型还是DataStream,不过泛型(流中的元素类型)可能改变。面代码中,MapFunction实现类的泛型类型,与输入数据类型和输出数据的类型有关。
2023-12-07 16:41:48
1150
原创 Flink-源算子-读取数据的几种方式
Flink可以从各种来源获取数据,然后构建DataStream进行转换处理。一般将数据的输入来源称为数据源(data source),而读取数据的算子就是源算子(source operator)。所以,source就是我们整个处理程序的输入端。方法传入的参数是一个“源函数”(source function),需要实现SourceFunction接口。Flink直接提供了很多预实现的接口,此外还有很多外部连接工具也帮我们实现了对应的Source,通常情况下足以应对我们的实际需求。
2023-12-07 15:47:13
1430
原创 回溯-组合总和
本题k相当于树的深度,9(因为整个集合就是9个数)就是树的宽度。例如 k = 2,n = 4的话,就是在集合[1,2,3,4,5,6,7,8,9]中求 k(个数) = 2, n(和) = 4的组合。
2023-12-06 16:36:03
825
原创 SQL-求解连续数问题
求解连续值的问题可以用常规的自连接方法比较当前行与下一行的值,自连接条件一般是id列,如果id列没有可以使用排序函数row_number、dense_rank等进行人为构造。
2023-12-06 11:01:14
937
原创 Flink核心概念
当要处理的数据量非常大时,我们可以把一个算子操作,“复制”多份到多个节点,数据来了之后就可以到其中任意一个执行。这样一来,一个算子任务就被拆分成了多个并行的“子任务”(subtasks),再将它们分发到不同节点,就真正实现了并行计算。在Flink执行过程中,每一个算子(operator)可以包含一个或多个子任务(operator subtask),这些子任务在不同的线程、不同的物理机或不同的容器中完全独立地执行。一个特定算子的子任务(subtask)的个数被称之为其并行度(parallelism)
2023-12-04 17:19:47
1331
原创 SQL-分页查询offset的用法
今天在做一道关于查询一张表中第二高工资的问题时发现没有思路,经过一番搜索发现需要用到offset偏移量来解决这个问题。OFFSET关键字用于指定从结果集的哪一行开始返回数据。通常,它与LIMIT一起使用,以实现分页效果。
2023-12-01 16:07:17
1864
原创 Flink的部署模式和运行模式
Flink提交作业和执行任务,需要几个关键组件:客户端:代码由客户端获取并作转换,之后提交给JobmanagerJobmanager就是Flink集群的管事人,对作业进行中央调度管理;当从客户端获取到转换过的作业后会进一步进行处理,然后分发给众多的taskmanagerTaskmanager:真正干活的人,数据的处理操作都是它们来做。
2023-11-30 17:23:52
583
原创 SQL计算两个日期之间的差值
该函数返回两个日期/时间之间的差值,可以指定差值的单位(秒、分钟、小时、天等)。unit:表示差值的单位,可以是以下值之一:MICROSECOND(微秒)、SECOND(秒)、MINUTE(分)、HOUR(小时)、DAY(天)、WEEK(周)、MONTH(月)、QUARTER(季度)或。今天在做下面这道SQL题目的时候想直接使用end_time-start_time得到相差的秒数,发现这样直接相减得到的数值是不对的,因此在找解决方案时用到了TIMESTAMPDIFF函数。
2023-11-23 17:15:52
3475
原创 二叉树的最近公共祖先
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。这个题目首先想到的应该是用回溯进行解决,即从二叉树底部向上遍历,那么后序遍历是首选的遍历方式。后序遍历(左右中)就是天然的回溯过程,可以根据左右子树的返回值,来处理中节点的逻辑。接下来就看如何判断一个节点是节点q和节点p的公共祖先呢。
2023-11-22 14:36:31
35
原创 SQL--行转列and列转行
行转列中由于原表只有两个字段,分别为name和subject,因此在select语句中也只能用这两个字段。使用SUM函数和CASE语句来完成行转列的功能,CASE用来判断subject是否等于要转成列的那个字段(也就是科目,比如语文or数学or英语),当条件为True时取出此时字段对应的科目成绩(score),反之赋值为null,最后对取到的值进行求和,求和时拿到的数据应该为(某一科目的成绩,null,null…),因此求和后的成绩就是原先科目的成绩,最后将其取个别名为该科目的名字。其他科目以此类推。
2023-11-09 14:03:09
108
原创 二叉搜索树的最小绝对差
遇到在二叉搜索树上求什么最值,求差值之类的,都要思考一下二叉搜索树可是有序的,要利用好这一特点。同时要学会在递归遍历的过程中如何记录前后两个指针,这也是一个小技巧,学会了还是很受用的。
2023-11-08 13:47:28
24
原创 二叉树-路径总和
判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum。不要去累加然后判断是否等于目标和,那么代码比较麻烦,可以用递减,让计数器count初始为目标和,然后每次减去遍历路径节点上的数值。参数:需要二叉树的根节点,还需要一个计数器,这个计数器用来计算二叉树的一条边之和是否正好是目标和,计数器为int型。递归函数是有返回值的,如果递归函数返回true,说明找到了合适的路径,应该立刻返回。因为终止条件是判断叶子节点,所以递归的过程中就不要让空节点进入递归了。
2023-10-31 13:38:29
58
原创 SQL练习题-各部门工资最高的员工
1.我们使用窗口函数rank(),它可以根据指定的分区(partition by)和排序(order by)条件对结果集进行排名。2.使用子查询(subquery),将Employee和Department两个表连接(LEFT JOIN),并将结果命名为t。例如,根据上述给定的表格,Max 在 IT 部门有最高工资,Henry 在 Sales 部门有最高工资。rank() over:对指定条件排名,条件相同排名相同,排名间断不连续即1,1,3,4,5,5,7。
2023-10-30 17:19:59
407
原创 左叶子之和
给定二叉树的根节点 root ,返回所有左叶子之和。首先要注意是判断左叶子,不是二叉树左侧节点,所以不要上来想着层序遍历。因为题目中其实没有说清楚左叶子究竟是什么节点,那么我来给出左叶子的明确定义:节点A的左孩子不为空,且左孩子的左右孩子都为空(说明是叶子节点),那么A节点的左孩子为左叶子节点大家思考一下如下图中二叉树,左叶子之和究竟是多少?没有左叶子!但看这个图的左叶子之和是多少?那么判断当前节点是不是左叶子是无法判断的,必须要通过节点的父节点来判断其左孩子是不是左叶子。
2023-10-30 15:38:52
27
原创 SQL高级处理
IN 是入参。每个参数默认都是一个 IN 参数。如需设定一个参数为其他类型参数,请在参数名称前使用关键字 OUT 或 INOUT。一个IN参数将一个值传递给一个过程。存储过程可能会修改这个值,但是当存储过程返回时,调用者不会看到这个修改。OUT 是出参。一个 OUT 参数将一个值从过程中传回给调用者。它的初始值在过程中是 NULL ,当过程返回时,调用者可以看到它的值。INOUT :一个 INOUT 参数由调用者初始化,可以被存储过程修改,当存储过程返回时,调用者可以看到存储过程的任何改变。
2023-10-24 15:12:01
37
原创 二叉树的所有路径
给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。叶子节点 是指没有子节点的节点。这道题目要求从根节点到叶子的路径,所以需要前序遍历,这样才方便让父节点指向孩子节点,找到对应的路径。在这道题目中将第一次涉及到回溯,因为我们要把路径记录下来,需要回溯来回退一个路径再进入另一个路径。
2023-10-24 10:46:30
30
原创 平衡二叉树
分别求出其左右子树的高度,然后如果差值小于等于1,则返回当前二叉树的高度,否则返回-1,表示已经不是二叉平衡树了。当然是其左子树高度和其右子树高度的差值。如果当前传入节点为根节点的二叉树已经不是二叉平衡树了,还返回高度的话就没有意义了。递归的过程中依然是遇到空节点了为终止,返回0,表示当前节点为根节点的树高度为0。所以如果已经不是二叉平衡树了,可以返回-1 来标记已经不符合平衡树的规则了。一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。返回值:以当前传入节点为根节点的树的高度。
2023-10-23 14:22:08
25
原创 求二叉树最大深度和最小深度
3.确定单层递归的逻辑:先求它的左子树的深度,再求右子树的深度,最后取左右深度最大的数值 再+1 (加1是因为算上当前中间节点)就是目前节点为根节点的树的深度。求解最小深度时容易陷入如下的一个误区,这就重新审题了,题目中说的是:最小深度是从根节点到最近叶子节点的最短路径上的节点数量。1.确定递归函数的参数和返回值:参数就是传入树的根节点,返回就返回这棵树的深度,所以返回值为int类型。所以,如果左子树为空,右子树不为空,说明最小深度是 1 + 右子树的深度。如果这么求的话,没有左孩子的分支会算为最短深度。
2023-10-19 14:10:13
59
原创 二叉树总结
满二叉树:如果一棵二叉树只有度为0的结点和度为2的结点,并且度为0的结点在同一层上,则这棵二叉树为满二叉树。这棵二叉树为满二叉树,也可以说深度为k,有2^k-1个节点的二叉树。
2023-10-17 10:26:13
26
原创 二叉树非递归遍历
递归的实现就是:每一次递归调用都会把函数的局部变量、参数值和返回地址等压入调用栈中,然后递归返回的时候,从栈顶弹出上一次递归的各项参数,所以这就是递归为什么可以返回上一层位置的原因。此时大家应该知道我们用栈也可以是实现二叉树的前后中序遍历了。
2023-10-11 16:19:13
25
原创 SQL-基础查询与排序
NULL的真值结果既不为真,也不为假,因为并不知道这样一个值。这时真值是除真假之外的第三种值——不确定(UNKNOWN)。一般的逻辑运算并不存在这第三种值。SQL 之外的语言也基本上只使用真和假这两种真值。与通常的逻辑运算被称为二值逻辑相对,只有 SQL 中的逻辑运算被称为三值逻辑。
2023-10-11 09:39:14
99
原创 Dual Personalization on Federated Recommendation
现有的联邦推荐框架通常由三个模块组成:用户嵌入以保存用户的个人资料,物品嵌入以保持项目之间的邻近关系,得分函数预测用户对给定物品的评分。此外,给定一个物品集,不同的人可能会有不同的看法来衡量他们的亲近关系。因此,个性化的物品嵌入可以进一步捕捉人们的个人偏好。其次,由于现有的基于神经网络的个性化评分函数具有足够的表达能力来保留用户嵌入信息,因此我们将用户嵌入从联邦推荐框架中移除。当客户端收到服务器的物品嵌入时,首先用全局物品嵌入替换自己的物品嵌入,然后在保持物品嵌入模块不变的情况下更新score函数。
2023-09-26 14:10:50
137
原创 打卡笔记day01
电炉对应17个温区的实际生产数据,分别是电炉上部17组加热棒设定温度T1-1T2-17,底部17组进气口的设定进气流量V1-V17。
2023-07-22 12:31:20
199
原创 移动开发第四次作业---SQLite数据库的DAO标准CRUD操作
1.整体布局(activity_main.xml)2个TextView:分别表示姓名和年龄;2个EditText:id分别为et_name,et_age3个Button按钮:id分别为bt_add,bt_modify,bt_del1个ListView:id为listView2.数据表操作SQLite数据库的DAO标准CRUD操作与数据库大致相同,使用android原生的execSQL()函数可直接进行数据的增删查改。建立一个数据表friends,添加属性值_id, name, age,对
2020-12-06 11:46:25
157
原创 Oracle登录问题
使用sysdba登录oracle使用此账户时用户名应该写为 sys as sysdba,否则会报错,找不到用户或者密码错误!!!
2020-11-17 17:27:19
271
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人