- 博客(78)
- 收藏
- 关注
原创 flink作业使用KafkaSink序列化消息key
本文介绍了如何在Flink作业中使用KafkaSink实现消息键的序列化。核心内容包括:1)自定义KafkaKeySerializer序列化器类,实现Tuple2<String,String>类型数据的key序列化;2)演示Flink作业的完整流程,从构建数据流到配置KafkaSink;3)提供三种设置key序列化器的方法(通过Serializer类+配置、仅Serializer类、或SerializationSchema)。其中重点展示了如何将Tuple2的第一个元素(客户ID)作为key进行
2025-10-15 14:17:58
111
原创 java注解@FunctionalInterface使用示例
本文演示了Java函数式接口的使用。通过@FunctionalInterface定义一个只能包含一个抽象方法的接口MyFunctionalInterface,其中可以包含默认和静态方法。示例展示了用Lambda表达式实现该接口,并调用抽象方法execute()、默认方法printDescription()和静态方法staticMethod()。整个过程体现了函数式编程的简洁特性。
2025-10-13 16:36:43
148
原创 HDFS异常org.apache.hadoop.hdfs.protocol.NSQuotaExceededException
例如,使用 hdfs dfsadmin -setSpaceQuota 和 hdfs dfsadmin -setQuota 来调整空间和文件数量的配额。:使用 HDFS 命令(如 hdfs dfs -count -q )检查相关目录的配额设置,了解当前的文件数量和存储空间使用情况。从该继承体系可知HDFS支持多种限额配置,如“路径长度限制”、“目录数限额”、“文件数限额”、“存储空间限额”等。:如果文件数量或存储空间超过了配额,可以考虑删除一些不必要的文件,释放空间。
2024-10-23 16:45:53
665
原创 Flink 报错 Exception: Could not create actor system
原因:依赖包中的 scala 版本不匹配,需要 pom.xml 文件统一 scala 版本,重新载入依赖包解决。
2024-05-27 14:58:03
1025
原创 Flink状态数据结构升级
目前,仅支持 POJO 和 Avro 类型的 schema 升级 因此,如果你比较关注于状态数据结构的升级,那么目前来看强烈推荐使用 Pojo 或者 Avro 状态数据类型。一个例外是如果新的 Avro 数据 schema 生成的类无法被重定位或者使用了不同的命名空间,在作业恢复时状态数据会被认为是不兼容的。Flink 完全支持 Avro 状态类型的升级,只要数据结构的修改是被 Avro 的数据结构解析规则认为兼容的即可。
2024-05-22 19:06:40
679
原创 Flink报错Checkpoint expired before completing
这个报错告警是由于在Flink作业执行过程中,触发或完成检查点(Checkpoint)的过程中,出现了检查点超时未能完成的情况。:确保作业运行时有足够的资源可用,如CPU、内存等,避免资源不足导致作业执行缓慢,进而影响检查点的完成时间。:可以通过调整Flink作业的配置参数,增加检查点的超时时间,以适应作业执行过程中可能出现的耗时操作。:对作业的任务和操作进行性能优化,减少耗时操作,提高作业执行效率,从而减少检查点的时间消耗。
2024-05-22 14:55:18
951
原创 Flink Task 性能指标
这些指标每两秒更新一次,上报的值表示 Subtask 在最近两秒被反压 (或闲或忙) 的平均时长。当你的工作负荷是变化的时需要尤其引起注意。比如,一个以恒定 50% 负载工作的 Subtask 和另一个每秒钟在满负载和闲置切换的 Subtask 的 busyTimeMsPerSecond 值相同,都是 500ms.backPressureTimeMsPerSecond: Subtask 被反压的时间。busyTimeMsPerSecond: Subtask 实际的工作时间。
2024-05-20 19:23:04
552
原创 Can‘t commit changes from multiple changelists at once
参考资料:https://foojay.io/today/intellij-idea-changelists-and-git-staging/同时选中时会导致此故障。需要把不是当前需要提交的。可以使用 Undo Commit 撤回本地提交的。由于 idea 一次只能提交一个更改列表(取消,或者合并为一个。
2024-05-20 14:31:56
1282
原创 Hive判空函数 COALESCE 和 NVL 使用示例
COALESCECOALESCE函数用于返回参数列表中第一个非NULL的数值或表达式。语法: COALESCE(value1, value2, …) ,参数可以是多个数值或表达式。返回值:返回参数列表中第一个非NULL的数值或表达式,如果所有参数均为NULL,则返回NULL。示例: SELECT COALESCE(column1, column2, ‘N/A’) AS result FROM table_name;NVLNVL函数用于将NULL值替换为指定的默认值。
2024-04-28 15:49:36
5112
2
原创 Hive EXPLAIN 执行计划解析
阶段本身的描述显示了一系列运算符及与运算符相关的元数据。在本示例中有2个map/reduce阶段(Stage-1和Stage-2)和1个与文件系统相关的阶段(Stage-0)。这些阶段可以是map/reduce阶段,也可以是执行元数据存储库或文件系统操作(如移动和重命名)的阶段。这个SQL查询的作用是从表src中选择key字段,并对每个key对应的value字段进行截取后求和,然后将结果插入到目标表dest_g1中。每个“+”表示一个按升序排序的列,每个“-”表示一个按降序排序的列。
2024-04-28 15:28:52
1044
3
原创 Hive官方文档 join table 总结
总的来说,Hive中的表join操作提供了多种方式来连接不同表之间的数据,包括内连接、外连接、半连接等,开发者可以根据具体需求选择合适的join操作来实现数据的关联和合并。
2024-04-23 10:01:30
594
2
原创 Hive侧视图 LATERAL VIEW 和 LATERAL VIEW OUTER 使用示例
在第一个查询中,由于 Jack 的 actions 字段为 NULL ,所以在使用 LATERAL VIEW 展开时,不会生成任何新的行。而在第二个查询中,使用 LATERAL VIEW OUTER 能够处理 NULL 值情况,保留了 Jack 的原始行并将 action 字段设为 NULL。值情况,确保展开操作的稳健性。根据具体情况和需求,可以选择合适的关键字来展开数据类型以便在查询中使用。都用于在Hive中展开复杂数据类型的字段,但。
2024-04-23 09:45:34
1207
原创 Hive字符串匹配函数 LIKE 和 RLIKE 使用示例
LIKELIKE 函数用于在Hive中进行简单的模式匹配,通常用于匹配固定模式的字符串。语法: column_nameLIKE‘pattern’示例: SELECT * FROM table_name WHERE column_nameLIKE‘abc%’在 LIKE 中,通配符表示匹配任意数量的字符(包括空字符),表示匹配任意单个字符。RLIKERLIKE 函数用于在Hive中进行正则表达式匹配,可以实现更灵活的模式匹配。语法: column_nameRLIKE‘pattern’
2024-04-18 16:34:29
2370
1
原创 Flink KafkaSink分区配置的不同版本对比
总结:根据Flink 官方文档提供的信息,可见Flink不同版本在处理写Kafka分区的默认配置是有区别的: 1. Flink版本 >=1.12: - 默认情况下,Flink使用Kafka默认分区器来对消息进行分区。 也就是 kafka 的粘性分区策略2. Flink版本
2024-04-18 12:43:05
1559
1
原创 Flink SQL 自定义函数 - 字符串拆分
/ 实现eval方法,用于拆分输入字符串并输出每个子串if (str!= null) {// 使用指定正则表达式对输入字符串进行拆分// 使用collect(...)方法发射一行数据。
2024-04-16 19:33:41
1809
原创 Hudi 表支持多种查询引擎对比
Apache Hudi有两种主要的表类型,分别是Copy on Write(COW)表和Merge on Read(MOR)表。COWMORCOW。
2024-04-16 15:24:53
621
原创 java 解析 xml 字符串转换为实体,实体转换为 xml 字符串
【代码】java 解析 xml 字符串转换为实体,实体转换为 xml 字符串。
2024-04-12 22:04:42
1206
原创 Hudi 如何运行 MOR 表的压缩?
运行MOR表的压缩最简单的方法是在内联模式下运行压缩,以花费更多时间进行摄入;这在常见情况下特别有用,即您有少量滞后数据流入旧分区。在这种情况下,您可能希望在等待足够的日志积累到旧分区时,仅对最后N个分区进行积极压缩。其最终效果是将大部分最近的数据转换为更有可能被查询的优化列格式。尽管如此,出于不阻塞摄入操作的明显原因,您可能还希望异步运行压缩。如果您正在使用Delta Streamer,则可以在连续模式下运行,其中摄入和压缩都在单个Spark运行时并行管理。
2024-04-11 15:27:34
441
原创 Flink作业 taskmanager.numberOfTaskSlots 这个参数有哪几种设置方式
可以在Flink的配置文件 flink-conf.yaml 中直接设置 taskmanager.numberOfTaskSlots 参数的值。这样设置可以全局生效,适用于所有作业。来动态设置任务槽数量。这种方式适用于 flink on k8s,可以覆盖配置文件中的设置,针对特定作业进行调整。参数用于设置每个TaskManager上的任务槽(task slot)数量,决定了TaskManager可以并行执行的任务数量。这个参数可以通过多种方式进行设置。:在提交Flink作业时,可以通过命令行参数。
2024-04-09 19:16:38
1869
1
原创 Flink SQL 报错 Illegal use of ‘NULL‘
在Flink SQL中,使用 NULL 值会导致SQL验证失败,为了解决这个问题,可以使用 CAST(NULL AS STRING) 来代替直接使用 NULL。通过使用 CAST(NULL AS STRING) ,可以明确地将 NULL 值转换为字符串类型,以便在后续的字符串操作中正确处理空值情况。提示:Flink SQL 提交时不能带有分号。
2024-04-09 18:26:11
1840
原创 Flink KafkaSource 启用动态分区检查
在不同版本的Flink中,动态分区检查(Dynamic Partitions Check)启用方式可能会有一些变化。
2024-04-08 10:41:57
1622
1
原创 Hive常用函数_16个时间日期处理
1.current_date()2.current_timestamp()3.year(date)4.month(date)5.day(date)6.date_format(date,pattern)7.from_unixtime(unix_time,format)8.unix_timestamp()9.datediff(endDate,startDate)10.date_add(date,days)11.date_sub(date,days)12.last_day(date)13.
2024-03-27 19:14:31
1025
原创 Hive常用函数_20个字符串处理
1.CONCAT()2.SUBSTR()3.UPPER()4.LOWER()5.TRIM()6.LENGTH()7.REPLACE()8.SPLIT()9.INSTR()10.REGEXP_EXTRACT()11.REGEXP_REPLACE()12.REVERSE()13.LPAD()14.RPAD()15.LOCATE()16.CONCAT_WS()17.INITCAP()18.SUBSTRING()19.ASCII()20.REPEAT()
2024-03-27 18:35:55
1564
原创 Hive常用函数_20个数值处理
1.ABS()2.ROUND()3.CEIL()4.FLOOR()5.EXP()6.LOG()7.POWER()8.SQRT()9.RAND()10.TRUNCATE()11.SIGN()12.MOD()13.GREATEST()14.LEAST()15.ACOS()16.ASIN()17.ATAN()18.COS()19.SIN()20.TAN()
2024-03-22 15:20:04
1137
原创 Hive自定义GenericUDTF函数官网示例
原文翻译:可以通过扩展抽象类并实现initializeprocess以及可能的close方法来创建自定义UDTF。initialize方法由Hive调用,通知UDTF应该期望的参数类型。然后,UDTF必须返回一个对象检查器,对应于UDTF将生成的行对象。一旦调用了,Hive将使用process()方法将行传递给UDTF。在process()中,UDTF可以通过调用forward()生成并转发行给其他操作符。最后,当所有行都传递给UDTF时,Hive将调用close()方法。
2024-03-21 18:52:10
610
原创 Hive自定义GenericUDF函数
*** 自定义函数:将字符串转换为大写*//*** 初始化函数* @param arguments 函数参数的ObjectInspector数组* @return 函数返回值的ObjectInspector* @throws UDFArgumentException 如果参数数量不正确*/@Override// 检查参数数量是否为1= 1) {// 获取参数的ObjectInspector并创建Converter。
2024-03-20 18:04:13
1535
原创 Hive自定义UDF函数
- 替换为实际的 JAR 文件路径/*** 自定义UDF函数,用于将输入的文本转换为大写形式*//*** UDF函数的评估方法,将输入的文本转换为大写形式* @param input 输入文本* @return 转换为大写形式的文本*/// 检查输入是否为空// 返回转换为大写形式的文本在这个示例中,类实现了Hive的UDF接口,并提供了evaluate方法来处理输入参数,并返回大写转换后的结果。
2024-03-20 17:45:01
610
原创 Hive函数 date_format 使用示例总结
通过查询`date_format`源码得知,在初始化阶段,函数会尝试使用给定的格式字符串( fmtStr )创建一个 `SimpleDateFormat` 对象,并将其时区设置为UTC。在 `evaluate` 方法中,函数通过 `SimpleDateFormat` 对象对输入的日期进行格式化处理,生成格式化后的字符串。如果格式化后的结果为null,则返回null,否则将结果设置到输出对象中并返回。
2024-03-19 12:50:45
6008
原创 Hive 使用 LIMIT 指定偏移量返回数据
LIMIT 子句可用于限制SELECT语句返回的行数。LIMIT 接受一个或两个数字参数,这两个参数必须都是非负整数常量。第一个参数指定要返回的第一行的偏移量(从Hive 2.0.0开始),第二个参数指定要返回的最大行数。当只提供一个参数时,它表示最大行数,偏移量默认为0。
2024-03-19 10:12:45
1814
原创 Flink报The implementation of the XxxFunction is not serializable
这个报错一般是因为引用了外部类的非静态方法导致。这个报错是 org.apache.flink.api.common.InvalidProgramException 异常,提示 FlatMapFunction 的实现不可序列化。异常信息表明实现访问了其封闭类的字段,这是导致不可序列化的常见原因。报错提示解决方法是将函数设置为一个适当的(非内部)类,或者设置为静态内部类。
2024-03-18 16:49:55
1173
原创 Hive集合函数 collect_set 和 collect_list 使用示例
在Hive中, collect_set 和 collect_list 是用于收集数据并将其存储为集合的聚合函数。
2024-03-14 19:24:41
2329
原创 Hive连接函数 concat 和 concat_ws 使用示例
CONCAT 函数:适用于简单的字符串拼接操作,将多个字符串连接成一个新的字符串。可以用于创建自定义的文本字段,合并多个字段的内容,或者添加固定的分隔符。适合在SQL查询中进行简单的字符串合并操作,不涉及复杂的逻辑或条件。CONCAT_WS 函数:适用于需要指定分隔符的字符串拼接操作,其中 WS 表示"with separator"。可以指定一个分隔符,将多个字符串连接起来,并在每个字符串之间插入指定的分隔符。
2024-03-14 19:08:24
2446
原创 深入理解计算机补码运算:从二进制表示到加法运算
在计算机中,数据通常以二进制补码形式进行运算和表示。在一个8位二进制系统中,我们可以表示256个不同的数字,其中最高位被规定为符号位,用于表示正数和负数。
2024-03-13 19:31:33
1109
3
原创 Flink实时写Hudi报NumberFormatException异常
这说明异常发生在解析历史数据文件时。查看hdfs文件目录发现,历史数据文件未按照桶索引逻辑进行编写,正常桶索引写入的文件名具有桶标识符作为前缀,而历史文件则缺乏此桶标识符前缀。因此,在尝试从历史文件名中解析桶标识符时,由于缺少预期的桶标识符前缀,解析过程失败。为确保该问题不再发生,需要确保历史数据文件遵循桶索引逻辑,这样可以保证解析过程顺利进行,避免 java.lang.NumberFormatException 异常的发生。经过调查发现,该非法的历史数据是由下游系统为方便调试程序时写入。
2024-03-13 12:22:52
844
原创 Hive函数 LAG 和 LEAD 使用示例
在这个示例中, `LAG` 函数用于获取前一个学生的分数, `LEAD` 函数用于获取后一个学生的分数。通过指定偏移量和默认值,可以处理边界情况。这两个函数在需要访问前后行数据进行比较或计算的情况下非常有用。
2024-03-08 23:30:56
1814
原创 Hive函数 EXPLODE 和 POSEXPLODE 使用示例
总结使用场景:EXPLODE 函数常用于展开数组类型的列,将数组中的元素拆分成多行,适用于需要对数组元素进行单独处理或分析的情况。POSEXPLODE 函数与 EXPLODE 类似,但同时返回数组中的元素以及元素的位置(索引),适用于需要同时处理数组元素和其位置的场景。
2024-03-08 19:03:07
1220
原创 Hive窗口边界ROWS BETWEEN 和 RANGE BETWEEN使用示例
总而言之, ROWS BETWEEN 和 RANGE BETWEEN 提供了不同的窗口边界定义方式, ROWS BETWEEN 基于行数,而 RANGE BETWEEN 基于值范围。根据具体需求和数据分析目的,选择合适的窗口边界定义方式来执行窗口函数操作。
2024-03-07 18:35:42
1736
原创 Hive中窗口函数的使用示例
总结:以上代码实现了对学生成绩表进行分数排序并为每个学生分配相应的排名或行号。ROW_NUMBER() 函数为每行分配唯一的连续序号;RANK() 函数为相同分数的行分配相同的排名,但会跳过下一个排名;DENSE_RANK() 函数为相同分数的行分配相同的排名,但不会跳过下一个排名。
2024-03-07 12:49:03
702
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅