- 博客(86)
- 资源 (2)
- 问答 (1)
- 收藏
- 关注
原创 Flink的SQL开发
Table API和SQL是最上层的API,在Flink中这两种API被集成在一起,SQL执行的对象也是Flink中的表(Table),所以我们一般会认为它们是一体的。Flink是批流统一的处理框架,无论是批处理(DataSet API)还是流处理(DataStream API),在上层应用中都可以直接使用Table API或者SQL来实现;这两种API对于一张表执行相同的查询操作,得到的结果是完全一样的
2024-01-29 12:52:14 1199
原创 FlinkAPI开发之FlinkSQL
这里的依赖是一个Java的“桥接器”(bridge),主要就是负责Table API和下层DataStream API的连接支持,按照不同的语言分为Java版和Scala版。
2024-01-24 13:17:14 1499
原创 Dinky安装和部署
Dinky 是一个开箱即用、易扩展,以 Apache Flink 为基础,连接 OLAP 和数据湖等众多框架的一站式实时计算平台,致力于流批一体和湖仓一体的探索与实践。
2024-01-21 14:57:30 1383
原创 FlinkAPI开发之容错机制
既然是端到端的exactly-once,我们依然可以从三个组件的角度来进行分析:(1)Flink内部Flink内部可以通过检查点机制保证状态和处理结果的exactly-once语义。(2)输入端输入数据源端的Kafka可以对数据进行持久化保存,并可以重置偏移量(offset)。所以我们可以在Source任务(FlinkKafkaConsumer)中将当前读取的偏移量保存为算子状态,写入到检查点中;
2024-01-18 13:56:47 1149
原创 FlinkAPI开发之状态管理
Flink的状态有两种:托管状态(Managed State)和原始状态(Raw State)。托管状态就是由Flink统一管理的,状态的存储访问、故障恢复和重组等一系列问题都由Flink实现,我们只要调接口就可以;而原始状态则是自定义的,相当于就是开辟了一块内存,需要我们自己管理,实现状态的序列化和故障恢复。通常我们采用Flink托管状态来实现需求。
2024-01-18 13:15:12 1291
原创 FlinkAPI开发之水位线(Watermark)
在Flink中,用来衡量事件时间进展的标记,就被称作“水位线”(Watermark)。具体实现上,水位线可以看作一条特殊的数据记录,它是插入到数据流中的一个标记点,主要内容就是一个时间戳,用来指示当前的事件时间。而它插入流中的位置,就应该是在某个数据到来之后;这样就可以从这个数据中提取时间戳,作为当前水位线的时间戳了。周期性生成器一般是通过onEvent()观察判断输入的事件,而在onPeriodicEmit()里发出水位线
2024-01-16 14:10:38 1064
原创 FlinkAPI开发之处理函数
之前所介绍的流处理API,无论是基本的转换、聚合,还是更为复杂的窗口操作,其实都是基于DataStream进行转换的,所以可以统称为DataStream API。在Flink更底层,我们可以不定义任何具体的算子(比如map,filter,或者window),而只是提炼出一个统一的“处理”(process)操作——它是所有转换算子的一个概括性的表达,可以自定义处理逻辑,所以这一层接口就被叫作“处理函数”(process function)。
2024-01-16 14:08:52 1036
原创 FlinkAPI开发之窗口(Window)
Flink是一种流式计算引擎,主要是来处理无界数据流的,数据源源不断、无穷无尽。想要更加方便高效地处理无界流,一种方式就是将无限数据切割成有限的“数据块”进行处理,这就是所谓的“窗口”(Window)。
2024-01-10 14:36:09 1491
原创 FlinkAPI开发之数据合流
在实际应用中,我们经常会遇到来源不同的多条流,需要将它们的数据进行联合处理。所以Flink中合流的操作会更加普遍,对应的API也更加丰富。
2024-01-07 15:35:02 1690
原创 FlinkAPI开发之数据分流
绝大多数转换算子,输出的都是单一流,流里的数据类型只能有一种。而侧输出流可以认为是“主流”上分叉出的“支流”,所以可以由一条流产生出多条流,而且这些流中的数据类型还可以不一样。利用这个功能可以很容易地实现“分流”操作。
2024-01-07 10:47:32 438
原创 FlinkAPI开发之自定义函数UDF
用户自定义函数(user-defined function,UDF),即用户可以根据自身需求,重新实现算子的逻辑。。
2024-01-07 09:55:18 1030
原创 JAVA数组总结
Java 语言里提供了支持多维数组的语法。如果说可以把一维数组当成几何中的线性图形,那么二维数组就相当于是一个表格,像Excel中的表格、围棋棋盘一样。
2024-01-05 14:35:01 807
原创 java多线程及线程锁
为完成特定任务,用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象。:程序的一次执行过程,或是正在内存中运行的应用程序。如:运行中的QQ,运行中的网易音乐播放器。:进程可进一步细化为线程,是程序内部的一条执行路径。一个进程中至少有一个线程。一个进程同一时间若并行执行多个线程,就是支持多线程的。线程作为。一个进程中的多个线程共享相同的内存单元,它们从同一个堆中分配对象,可以访问相同的变量和对象。这就使得线程间通信更简便、高效。但多个线程操作共享的系统资源可能就会带来安全的隐患。
2024-01-03 11:56:53 1108
原创 Linux的常用命令及用法案例
curl 是一种使用 URL 从服务器传输数据或向服务器传输数据的工具。它支持以下协议:DICT、FILE、FTP、FTPS、GOPHER、GOPHERS、HTTP、HTTPS、IMAP、IMAPS、LDAPS、MQTT、POP3、POP3S、RTMP、RTMPS、RTSP、SCP、SFTP、SMB、SMBS、SMTP、SMTPS、TELNET、TFTP、WS 和 WSS。curl 由 libcurl 提供支持,用于所有与传输相关的功能。
2023-12-23 14:55:33 1099
原创 Shell编程从入门到实战
shell可以合并编程语言以控制进程和文件,以及启动和控制其他程序shell能够减少大量的重复输入和交互操作,能够进行批量的处理和自动化完成维护,减轻管理层的负担
2023-12-23 14:54:24 839
原创 hive企业级调优策略之CBO,谓词下推等优化
不幸的是,Hive并不会执行这种优化,因此,如果表足够大,那么这个查询就会出现不可控的情况。对于小数据集,执行时间可以明显被缩短。根据上述案例可以看出,CBO优化对于执行计划中join顺序是有影响的,其之所以会将province_info的join顺序提前,是因为province info的数据量较小,将其提前,会有更大的概率使得中间结果的数据量变小,从而使整个计算任务的数据量减小,也就是使计算成本变小。CBO优化也会完成一部分的谓词下推优化工作,因为在执行计划中,谓词越靠前,整个计划的计算成本就会越低。
2023-12-20 10:25:52 1276
原创 hive执行集群模式正常本地模式报错Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask
默认HADOOP_HEAPSIZE为256 (MB),设置成1024M。将hive-env.sh.template后缀.template去掉。
2023-12-19 21:00:54 421
原创 hive企业级调优策略之数据倾斜
数据倾斜问题,通常是指参与计算的数据分布不均,即某个key或者某些key的数据量远超其他key,导致在shuffle阶段,大量相同key的数据被发往同一个Reduce,进而导致该Reduce所需的时间远超其他Reduce,成为整个任务的瓶颈。
2023-12-19 14:35:55 1404
原创 hive企业级调优策略之Join优化
Hive拥有多种join算法,包括Common Join,Map Join,Bucket Map Join,Sort Merge Buckt Map Join等
2023-12-19 11:27:30 1946
原创 hive企业级调优策略之分组聚合优化
Hive对分组聚合的优化主要围绕着减少Shuffle数据量进行,具体做法是map-side聚合。所谓map-side聚合,就是在map端维护一个hash table,利用其完成部分的聚合,然后将部分聚合的结果,按照分组字段分区,发送至reduce端,完成最终的聚合。map-side聚合能有效减少shuffle的数据量,提高分组聚合运算的效率。
2023-12-19 11:23:45 1290
原创 hive企业级调优策略之如何用Explain查看执行计划
Explain呈现的执行计划,由一系列Stage组成,这一系列Stage具有依赖关系,每个Stage对应一个MapReduce Job,或者一个文件系统操作等。
2023-12-19 11:21:24 548
原创 Execution Error, return code 3 from org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask
该值不能超出yarn.scheduler.maximum-allocation-mb和yarn.scheduler.minimum-allocation-mb规定的范围。此次计算所需的节点内存超出配置的内存值。单个Map Task申请的container容器内存大小,其默认值为1024。使用hive进行map join时, 节点内存不够就会报该类型错误。
2023-12-18 12:55:56 137
原创 FAILED: HiveException java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.me
FAILED: HiveException java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.me
2023-12-17 11:26:20 480
原创 hive的分区表和分桶表详解
分桶表的基本原理是,首先为每行数据计算一个指定字段的数据的hash值,然后模以一个指定的分桶数,最后将取模运算结果相同的行,写入同一个文件中,这个文件就称为一个分桶(bucket)。
2023-12-15 13:24:36 303
原创 hive常用SQL函数及案例
Hive会将常用的逻辑封装成函数给用户进行使用,类似于Java中的函数。好处:避免用户反复写逻辑,可以直接拿来使用。重点:用户需要知道函数叫什么,能做什么。Hive提供了大量的内置函数,按照其特点可大致分为如下几类:单行函数、聚合函数、炸裂函数、窗口函数。以下命令可用于查询所有内置函数的相关信息。
2023-12-14 17:07:44 979
原创 hive聚合函数之排序
distribute by类似MapReduce中partition(自定义分区),进行分区,结合sort by使用。cluster by除了具有distribute by的功能外还兼具sort by的功能。Sort By:对于大规模的数据集order by的效率非常低。对于distribute by进行测试,一定要分配多reduce进行处理,否则无法看到distribute by的效果。distribute by的分区规则是根据分区字段的hash码与reduce的个数进行相除后,余数相同的分到一个区。
2023-12-14 11:06:38 259
原创 hive聚合函数之JOIN原理及案例
本例中会首先启动一个MapReduce job对表e和表d进行连接操作,然后会再启动一个MapReduce job将第一个MapReduce job的输出和表l进行连接操作。union和union all都是上下拼接sql的结果,这点是和join有区别的,join是左右关联,union和union all是上下拼接。union去重,union all不去重。将员工表30部门的员工信息和40部门的员工信息,利用union进行拼接显示。内连接:只有进行连接的两个表中都存在与连接条件相匹配的数据才会被保留下来。
2023-12-13 17:47:28 192
原创 hive自定义函数及案例
1.继承 AbstractGenericUDAFResolver重写 getEvaluator方法,对传入的值进行判断。2.创建数据缓存区,创建一些变量来进行调用赋值,作为中间值,类似于flink的checkpoints。3.继承GenericUDAFEvaluator类重写方法即可,实现具体逻辑的类。为了方便理解可以参考以下文章:UDAF重要的类及原理分析(UDAF继承类的各个方法的用法)Hive之ObjectInspector详解(UDAF中用到的类型详解)
2023-12-09 15:27:10 501
原创 User: zhangflink is not allowed to impersonate zhangflink
User: xxx is not allowed to impersonate xxx
2023-12-06 19:44:54 624
原创 Hive的使用技巧
注意:用户自定义配置会覆盖默认配置。另外,Hive也会读入Hadoop的配置,因为Hive是作为Hadoop的客户端启动的,Hive的配置会覆盖Hadoop的配置。默认配置文件:hive-default.xml。用户自定义配置文件:hive-site.xml。重新启动日志路径已经出现在配置的路径。
2023-12-05 15:23:36 526
原创 Hive的metastore服务的两种运行模式
生产环境中,不推荐使用嵌入式模式。因为其存在以下两个问题:(1)嵌入式模式下,每个Hive CLI都需要直接连接元数据库,当Hive CLI较多时,数据库压力会比较大。(2)每个客户端都需要用户元数据库的读写权限,元数据库的安全得不到很好的保证。
2023-12-05 11:42:43 543
原创 Could not find or load main class org.apache.hadoop.mapreduce.v2.app.MRAppMaster
[2023-12-04 15:06:00.199]Container exited with a non-zero exit code 1. Error file: prelaunch.err.Last 4096 bytes of prelaunch.err :Last 4096 bytes of stderr :Error: Could not find or load main class org.apache.hadoop.mapreduce.v2.app.MRAppMaster
2023-12-04 15:44:04 55
原创 ==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-unit-files === Authentication is required to
Authentication is required to reload the systemd state.Authenticating as: Cloudera Manager (cloudera-scm)Password:
2023-12-03 18:18:16 1608
原创 初始化 Clouder Manager 数据库报错Unable to find JDBC driver for database type: MySQL
[ main] DbCommandExecutor INFO Unable to find JDBC driver for database type: MySQL[ main] DbCommandExecutor ERROR JDBC Driver com.mysql.jdbc.Driver not found.[
2023-12-03 17:28:38 253 1
原创 Datax安装部署及读取MYSQL写入HDFS
File /datax/mysql__92df3245_1a54_4381_a5e6_649aed660db1/dict__1fe9a71f_6a1d_421d_b4fb_ac5226637b42.gz could only be written to 0 of the 1 minReplication nodes. There are 3 datanode(s) running and 3 node(s) are excluded in this operation
2023-11-25 19:04:16 646
原创 maxwell采集数据到kafka报错
ERROR MaxwellKafkaProducer - Expiring 35 record(s) for maxWellData-0: 30005 ms has passed since batch creation plus linger time
2023-11-23 17:10:31 441
FlinkCDC连接MYSQL8.0报错
2022-01-22
TA创建的收藏夹 TA关注的收藏夹
TA关注的人