大数据开发 Spark task多线程资源争抢问题 Spark task多线程资源争抢问题 在多个task同时读取 object 单例的内部非线程安全的对象时会报错,示例代码如下: 这个对象是线程不安全的,但是在task里面的多个线程会共用这个对象所有可能会有问题 val sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") 单个 partition 顺序执行的不会出现争抢问题 yuziyue 8 Aug 2023 · 1 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
大数据开发 Spark history server 部署 我们知道,在提交 spark 任务后,可以通过 SparkUI 的地址 http://:4040 查看应用的状态、实时日志等信息,但是一旦应用运行完成或者停止,我们就查看不了这些信息了,这时我们可以配置 Spark history server,它可以将历史 app 的日志放到指定hdfs 目录,然后通过 http 接口开放出来。 yuziyue 26 Jun 2023 · 4 min read
大数据开发 spark rdd 概念与实战 Spark 中的 RDD 就是一个不可变的分布式对象集合。每个 RDD 都被分为多个分区,这些分区运行在集群中的不同节点上。RDD 可以包含 Python、Java、Scala 中任意类型的对象,甚至可以包含用户自定义的对象。用户可以使用两种方法创建 RDD:读取一个外部数据集 yuziyue 23 Jun 2023 · 5 min read
大数据开发 spark rdd 持久化数据 我们在操作 rdd 的过程中,避免多次计算同一个 rdd,我们可以使用spark提供的持久化功能,一个rdd若果已经持久化过了,就不需要再次计算了,直接从内存的持久化中获取结果就行,如果持久化的数据过多,内存放不下,spark会使用LRU策略把最老的缓存清除掉。 yuziyue 23 Jun 2023 · 2 min read
大数据开发 Spark实战最常用算子合集详解 Spark实战最常用算子合集,包含最常用的spark算子使用方法,每个算子都有使用示例。实际上spark的很多算子都是基于几个原始算子封装而来,文中也会对几个非常重要,非常底层的核心算子做详细解释,其中也会有源码讲解。 yuziyue 21 Jun 2023 · 16 min read