大数据开发 Flink 广播流(流处理) 当两条流需要 join 的时候,并且其中一条流的数据量很小,并且不是经常变动。此时可以将数据流较小的流作为广播流,这样的话在另外一条流的每一个Subtask里面都有了这个数据量较小的数据流。 配合 MapStateDescriptor 使用,就可以把广播流当做变量一样来使用了。 同时还可以实时更新广播流的值。 yuziyue 29 Jul 2023 · 2 min read
大数据开发 SparkSQL使用UDF和UDAF和UDTF SparkSQL使用UDF和UDAF和UDTF 一. UDF 用户自定义函数UDF(User Defined Function)UDAF(User Defined Aggregate Function),即用户定义的聚合函数,聚合函数和普通函数的区别是什么呢,普通函数是接受一行输入产生一个输出,聚合函数是接受一组(一般是多行)输入然后产生一个输出,即将一组的值想办法聚合一下。 yuziyue 29 Jul 2023 · 3 min read
大数据开发 Spark task 序列化总结 我们在 driver 中定义的数据,在 executor 中执行时是无法获取到 driver 中的数据的( 会报错Task not serializable),task 分为 ShuffleMapTask 和 ResultTask,这两种 task 都已经实现了序列化了,所以如果我读取在 driver 中定义的对象,还需要将数据序列化。 其中一种方法是使用广播变量 另一种方法是我们手动编写数据的序列化方法。 yuziyue 29 Jul 2023 · 2 min read
大数据开发 SparkStreaming Scala 示例 准备TCP连接 命令行启动 8888 端口,等待 SparkStreaming 来连接,当 SparkStreaming 启动后再这里输入内容,SparkStreaming 会立即读取输入的内容,等待 SparkStreaming 来连接 添加SparkStreaming的依赖 编写代码 lines.flatMap(_.split(" ")).map((_, 1)).reduceByKey(_ + _).print() yuziyue 29 Jul 2023 · 1 min read
大数据开发 Spark 创建 DataFrame 的7种方法 Spark 创建 DataFrame 的7中方法 使用 toDF 传入参数创建DataFrame 使用 scala case class 创建DataFrame 使用 scala class 创建DataFrame 使用 java class 创建DataFrame 使用 StructType 创建DataFrame 读取 JSON 创建DataFrame 读取 CSV 创建DataFrame csv读取schema时,不需要读取整体的数据,只需要读取前几行即可 yuziyue 29 Jul 2023 · 3 min read
大数据开发 Spark 所有排序方法总结 Spark 所有排序方法总结 定义case class,在内部重写需要排序的字段 然后使用sortBy(x => x) 指定一个 tuple,安装tuple给定的字段排序 如果需要倒序,使用负号 排序方法1 排序方法2 排序方法3 排序方法4 val name = fields(0) val age = fields(1).toInt val score = fields(2).toInt Person(name, age, score) yuziyue 29 Jul 2023 · 2 min read
大数据开发 SparkStreaming连接Kafka示例 配置kafka 配置kafka,确保kafka能正常生产消息,消费消息。SparkStreaming程序 使用和 kafka 直连的方式:SparkStreaming的一个task对应一个kafka的一个partition。这个task不仅仅是读数据,还有处理的逻辑。在 map 里面可以判断这个消息来自哪个topic yuziyue 29 Jul 2023 · 2 min read
大数据开发 Hbase 性能优化总结 因为一个cf会对应一个store,每个store都有一个Memstore,当触发flush阈值后进行flush的最小单位是Region,而不是MemStore级别的,所以会有多个cf被flush,会生成多个HFile文件。并且HFile多了就会频繁触发compact。最终导致系统产生更多的I/O。批量数据写入采用 BulkLoad HBase通过rowkey、family、qualifier、TimeStamp可以对HBase中的数据进行快速定位,HBase中rowkey可以唯一标识一行记录。 yuziyue 29 Jul 2023 · 4 min read
大数据开发 Kafka 事务与 ExactlyOnce 语义 为了实现Producer的幂等语义,Kafka引入了Producer ID(即PID)和Sequence Number。每个新的Producer在初始化的时候会被分配一个唯一的PID,该PID对用户完全透明而不会暴露给用户。对于每个PID,该Producer发送数据的每个都对应一个从0开始单调递增的Sequence Number。 yuziyue 29 Jul 2023 · 8 min read
大数据开发 Kafka 使用 Java 多线程消费数据 Kafka 使用 Java 多线程消费数据 下面的示例中,使用多线程消费数据Kafka数据,并手动提交 offset 手动提交的的好处是不会丢失数据,如果程序崩溃,会重复消费部分数据,所以你的程序针对相同的数据可以幂等地运行。 表示在还没有提交过任何 offset 的时候,从什么位置开始消费数据 yuziyue 29 Jul 2023 · 1 min read
大数据开发 Kafka 生产者与消费者 JAVA API 本文总结 Kafka 生产者与消费者的 JAVA API 示例 序列化与反序列化 序列化配置 反序列化配置 1.3 ProducerRecord参数 二. 生产者 创建测试kafka ProducerRecord 消息记录可以简化参数,最简单的可以只有两个参数:topic 和 value,其他的都是用默认值。kafka消息的timestamp如果是自定义的话,不能晚于当前7天,因为晚于7天的消息会被自动删除。 yuziyue 29 Jul 2023 · 4 min read
大数据开发 什么是 Kafka 消费者组 一个分区只可以被消费组中的一个消费者所消费。 一个消费组中的一个消费者可以消费多个分区,例如 C1 消费了 P0,和P3 。 一个消费组中的不同消费者消费的分区一定不会重复,例如:C1 消费 P0和P3 , C2 消费 P1和P2。 所有消费者一起消费所有的分区,例如 C1 和 C2 共同完成了对 P0、P1、P2、P3 的消费。 yuziyue 29 Jul 2023 · 2 min read
大数据开发 kafka压力测试方法 在Kafka集群搭建好以后通常会进行测试,测试包括写入压力测试、消费速度测试,Kafka 本身提供了对应的方法,直接使用即可。创建测试 topic、测试写入速度、测试消费速度、指定每次fetch的数据的字节数 # --threads 指定消费者线程数量 yuziyue 29 Jul 2023 · 1 min read
大数据开发 Kafka 单机多 broker 部署 Kafka 单机多 broker 部署,即在一台机器上跑多个 broker,正常线上部署时,一台服务器应该只部署一个 broker。单机多 broker 的目的是为了测试学习 Kafka 时使用 备份的节点列表id,无论该节点是否是 leader 或者目前是否还活着,不管node死活,只是列出信息而已。 yuziyue 29 Jul 2023 · 2 min read
大数据开发 Kafka 管理-生产-消费命令行工具 本文将总结 Kafka 中的管理 topic、生产消息、消费消息的常用命令行。一. 启动停止 Kafka 二. Kafka常用命令 2.1 topic 管理 2.2 生产消息 2.3 消费消息 # 消费组:通过组消费,blogGroup 会被自动创建,重新启动时从上次消费的位置开始 # 消费组:查看组详情,包括消费进度、积压数量等 yuziyue 29 Jul 2023 · 2 min read
大数据开发 Kafka 原理与架构完全总结 一台kafka服务器就是一个broker,一个集群由一个或多个broker组成。在kafka的配置文件server.properties中,broker.id=0表示当前服务器的broker ID号,该ID号在集群内是全局唯一的。如果在节点紧缺的时候,一台服务器也可以启动多个broker。Epoch。一个单调增加的版本号。每当副本领导权发生变更时,都会增加该版本号。小版本号的 Leader 被认为是过期 Leader,不能再行使 Leader 权力。 yuziyue 29 Jul 2023 · 20 min read
大数据开发 HBase 数据库架构原理大总结 HBase是一个开源的Key-Value型数据库,运行于HDFS文件系统之上,它本本质上是一个多维稀疏排序Map。HBase本质上是一个Map结构数据库,HBase中Map的key是一个复合键,由rowkey、column family、qualifier、type以及timestamp组成,value即为cell的值。比如: yuziyue 28 Jul 2023 · 13 min read
大数据开发 Hbase JAVA API 接口使用 下面是常用的 HBase 的交互方式,本文以 Java API 为例,给出常用场景的使用方法。 根据 hbase 的版本,添加相同版本的 hbase-client 客户端。将安装Hbase的配置文件hbase-site.xml拷贝到src/main/resources/目录下,如果需要打包然后在其他服务器上跑的话,将该配置文件放置在classpath下即可。 yuziyue 28 Jul 2023 · 4 min read