自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 FlinkSql读取kafka数据流的方法(scala)

我们首先建一个kafka主题person_test。指定 Kafka 消费者组的 ID为person_test_group。指定了控制 Flink 从 Kafka 中读取数据时的起始位置。指定要读取的kafka主题为person_test。指定kafka所在的服务器的ip地址以及端口号。指定了 kafka 消息的格式为csv。指定 CSV 数据中字段的分隔符为,我的scala版本为2.12。其中的一些参数解释如下:'指定连接器类型为kafka。指定了忽略解析异常的信息。

2024-11-12 22:28:37 766

原创 FlinkSql读取外部Mysql和HBase数据库的方法(scala)

在flinkSQL中,我建立一张虚拟表person,然后在字段列表中,每一个字段名的数据类型都必须和MySQL中源数据的数据类型相匹配,否则会报错。指定登录MySQL用户的账号和密码,我这边为了方便使用的是root用户,实际使用时不能使用root。要保证该用户有读取你指定的那张表的权限。指定 HBase 使用的 ZooKeeper 集群的地址和端口。指定使用的连接器类型,这里是 HBase 的版本 2.2。指定所要连接的MySQL服务器地址以及库名。指定在 HBase 中要访问的表的名称。

2024-11-04 18:05:23 696

原创 FlinkSql读取本地文件系统的csv和json文件的方法(scala)

可以发现FlinkSQL建立的表自动多出了一列op,op是操作(operate)的意思+I代表这行数据是insert进入的。指定了文件的格式为CSV(逗号分隔值)。这意味着表中的数据将以CSV格式存储或读取。指定在解析CSV文件时,如果遇到解析错误,应该忽略这些错误而不是抛出异常。FlinkSql读取本地文件系统的csv和json文件需要以下两个依赖。建立一个scala类JSONFileSystem,内容如下。这意味着这个表将与本地文件系统交互,用于读写数据。指定了CSV文件中字段的分隔符为逗号(

2024-10-24 22:43:20 610 1

原创 flink的状态计算特性

在Flink中,状态是一批有状态的流处理过程中,根据当前输入数据和已处理数据共同转换输出结果的中间数据。它通过维护和利用状态信息来处理流数据,允许开发者专注于业务逻辑的实现,而Flink则负责处理状态的存储、访问、故障恢复等底层细节,从而提高了系统的可扩展性和容错性。Flink提供了一套完整的状态管理机制,包括状态一致性、高效存储和访问、持久化保存、故障恢复以及资源扩展时的状态调整,开发者通常无需过多关注这些底层细节。Flink的状态可以分为托管状态和原始状态。托管状态进一步细分为算子状态和键控状态。

2024-09-24 19:57:00 336

原创 kafka的ISR机制详解

在实际操作中,Kafka不会等待所有五个副本都确认消息后再认为消息已提交,ISR的做法是先设置几个队列(如设置3个,一般要为奇数个,不然zookeeper的过半选举机制容易难以进行),作为ISR队列,要求leader同步完这个两个才算完成,而其他的副本作为followers队列,不要求及时同步。这样做的好处就是如果leader端发生故障,可以及时从ISR队列中选出一个leader,因为他们是完全同步的,所以直接衔接,不会出任何问题,随后ISR再从followers队列中选取一个作为ISR队列的替补。

2024-09-22 22:58:33 1224

原创 Java导scala包的一个特性:不能调用嵌套对象

Java导scala包的一个特性:不能调用嵌套对象

2024-08-15 09:30:00 273

原创 解决grafana安装clickhouse插件plugins not found问题

failed to open plugins path,因为安装插件我使用的是root用户,所以导致了grafana用户没有权限读取/var/lib/grafana/plugins的文件夹,所以才会导致插件无法正常使用。改后重启服务,数据源和插件就都可以正常使用了,最后还发现,其实不必向官网一样配一个clickhouse.yaml数据源,安装完插件,网页可以直接配置clickhouse数据源。打开网页后,clickhouse数据源无法正常使用,插件也没有正常工作。研究一段时间发现日志显示。

2024-08-13 11:11:44 739

原创 Kafka消费者策略:数据读取方式与偏移量管理

在读取的时候,就会在kafka的_consumer_offsets中就会把各分区的偏移量记录下来,这样在下一次读取的时候,如果有相同的groupId,相同的topic,就会直接在_consumer_offsets中读取到这个偏移量,然后从topic的对应偏移量往后继续读取。这样偏移量就存储在了Redis,在下一次读取的时候,先把Redis中的偏移量读取到客户端的内存中,这样客户端可以并行的读取分区和偏移量,并直接通过信息并行访问kafka相应主题继续读取数据。中读取上次的偏移量,继续从该位置开始读取数据。

2024-08-12 11:07:33 539

原创 zookeeper协同kafka工作原理的简单描述

第一步为外部请求首先到zookeeper上的(因为数据同步,到哪一个服务器都可以,不需要是leader)。第二步通过zookeeper的元数据可以找到集群内部的服务器的api接口访问,将这个结果返回到外部请求。第三步是外部请求再带着api信息就能准确的找到对应的kafka服务器并发生请求。Zookeeper是主从复制的,有一个leader,其他都是follower。Leader虽然是领导者,但是实际上所有数据和follower是一样的,是同步数据的,不过客户端的写操作只通过leader进行。

2024-08-08 10:34:43 322

原创 实时计算框架梳理(flink,kafka,hbase/redis,clickhouse)

一旦监控到有数据产生,进入kafka服务器,并建立一个topic,开始了数据处理。这样的话,dws-sec中就会包含一些“未计算”的异常数据,这样就需要进行判断数据是否被计算过,没有计算过则需要重新计算,已经完成计算的不做处理,在分级,小时级中,同样也会存在这样的情况,处理方式也一样。当传来的消息时间戳在(t,t+5)的区间中,会进入分区,如果出现一条消息的时间戳大于t+5,那么这个分区就会锁起来,随后flink把这个分区的数据进行计算聚合,然后又进入kafka服务器,形成新的主题,成为秒级聚合的结果。

2024-08-06 10:03:20 2586 1

原创 SparkSql API的rollup,cube函数

在学习使用sparkSQL的分组并表函数中,网上大部分人都是直接使用SQL语句使用grouping sets,rollup,cube等函数的,很少有写用api形式如何使用这些函数的,于是我来记录一下api形式的用法。如 cube(a,b,c) <=> grouping sets(,a,b,c,(a,b),(a,c),(b,c),(a,b,c))如 rollup(a,b,c) <=> grouping sets(a,(a,b),(a,b,c))如 grouping sets(a,b,c,(a,c))

2024-08-05 10:18:48 419

原创 解决sparksql在foreach操作报错:org.apache.spark.SparkException: Task not serializable

这个操作把一个spark对象变成一个普通的Array[]对象,使用的foreach也就不是spark的foreach,而是scala的foreach(同样是foreach,竟然还是有区别的),这样就规避了这个序列化的问题,可以正常进行写入表数据了。原因是spark任务中包含了不可序列化的对象或者闭包,应该是因为SparkSession不能序列化分析。在数仓建立的最后一步,可能需要把数据从hive写入MySQL,我在学习中尝试写了一段这样的代码。

2024-08-02 11:02:11 416

原创 使用调度器运行jar包(scala代码)踩坑记录(jar包找不到主类、spark.shuffle.service.enabled未开启)

研究一段时间发现,这与maven打包插件的机制有关,因为我在写代码的时候,使用的local是一直在运行测试的,运行测试的过程中就会产生编译后的.class文件,maven在打包的时候,如果有target的文件,是直接把tartget里编译好的写入jar包里的,如果没有,maven才会重新编译打包。我把打完的jar包打开看了一下,确实没有这个类,不仅如此,我的代码甚至没有被编译成.class文件,但是在把master改成yarn前的代码,是有被编译成.class的,类都是有的。它要是再不好,我都要红温了。

2024-08-01 11:12:27 937

原创 dolphinscheduler的spark环境变量踩坑记录

得知环境变量不能像官方模板一样配SPARK_HOME,而是要配SPARK_HOME1和SPARK_HOME2(取决于调度器运行时选择的spark版本),最终任务成功运行。尝试使用dolphinscheduler调度器跑spark任务时,一直报错spark,环境变量异常。

2024-07-31 08:49:18 423

原创 SparkSql用户自定义函数处理非标准时间(scala)

spark进行数据分析时,遇到hive中形如“2018-1-31 24:03:00”的非标准日期,由于该日期不仅位数不是标准化的,而且出现了24点03的时间,导致自带的date_format函数和 from_unixtime(unix_timestamp())都无法正常处理,最终选择用户自定义函数解决。

2024-07-30 08:48:32 200

原创 hive的优化策略

以 on,where 多条件字段顺序,建【多重】分区表,默认开启支持,以分区字段为条件筛选数据,tez引擎:动态分区剪裁支持。控制Mapper和Reducer数量,mapper的启动和初始化开销较大,【数量过多】导致开销大于逻辑处理,浪费资源。从表:不存在以NULL填充,where不能下推,on可以下推。主表:全部显示, on条件不能下推,where可以下推。配置压缩格式,表存储格式,查看是否支持压缩,是否支持切片。【连接键】的值分布不均:值集中的少数分区,其他分区没有值。分桶=>拉链表(分桶表)、抽样。

2024-07-29 10:11:46 2317

原创 MapReduce执行过程以及job优化手段

Partitioning: 将Map输出的键值对根据键的哈希值分配到不同的Reduce任务中,以便进行后续的处理。Map任务启动: 对于每个Map任务,Hadoop集群会分配一个计算节点,该节点加载Map任务所需的代码和数据。Shuffling: Reduce任务从Map任务的输出中获取数据,这通常涉及数据的拷贝和网络传输。Map函数执行: Map任务执行用户定义的Map函数,处理输入切片的数据,并生成一系列键值对。Map输出缓冲: Map任务的输出被缓存在内存中,并在一定阈值后,将一部分数据溢写到磁盘。

2024-07-29 09:20:28 390

空空如也

空空如也

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

TA关注的人

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