自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

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

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

2024-08-15 09:30:00 247

原创 解决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 186

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

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

2024-08-12 11:07:33 388

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

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

2024-08-08 10:34:43 284

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

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

2024-08-06 10:03:20 1161

原创 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 330

原创 解决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 318

原创 使用调度器运行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 571

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

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

2024-07-31 08:49:18 287

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

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

2024-07-30 08:48:32 173

原创 hive的优化策略

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

2024-07-29 10:11:46 1204

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

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

2024-07-29 09:20:28 351

空空如也

空空如也

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

TA关注的人

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