有何不可~
码龄7年
关注
提问 私信
  • 博客:102,719
    动态:108
    102,827
    总访问量
  • 48
    原创
  • 54,590
    排名
  • 15
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:广东省
  • 加入CSDN时间: 2017-11-20
博客简介:

qq_41123269的博客

查看详细资料
  • 原力等级
    当前等级
    3
    当前总分
    253
    当月
    1
个人成就
  • 获得45次点赞
  • 内容获得13次评论
  • 获得81次收藏
  • 代码片获得308次分享
创作历程
  • 2篇
    2024年
  • 19篇
    2022年
  • 3篇
    2021年
  • 9篇
    2020年
  • 10篇
    2019年
  • 7篇
    2018年
成就勋章
TA的专栏
  • 大数据note
    3篇
  • 面试整理
    1篇
  • hive
    3篇
  • Spark
    13篇
  • scala
    7篇
  • flink
    5篇
  • hadoop
  • 配置
    1篇
  • flume
    1篇
  • 线程
    1篇
  • mvc
    1篇
  • 数据库
    5篇
  • java
    5篇
  • 云服务器
    1篇
  • vue+element-ui
    2篇
兴趣领域 设置
  • 大数据
    hadoophivesparketl
创作活动更多

超级创作者激励计划

万元现金补贴,高额收益分成,专属VIP内容创作者流量扶持,等你加入!

去参加
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

拉链表的实现过程

当天删除,修改结束时间 一天多跑,要和 “当天修改” 区分开来,开始时间和结束时间不变。当天新增,直接添加新行,开始时间为当天,结束时间为极大值(9999-12-31)数据量大,且变化缓慢的表,需要同时记录历史数据和变化后的数据。(使用数据生效的开始时间和结束时间来记录 数据的变化)当天修改,添加新行,修改旧行的结束时间为昨天。
原创
发布博客 2024.10.20 ·
360 阅读 ·
10 点赞 ·
0 评论 ·
3 收藏

如何保证数据指标的正确性

筛选各个维度,直接查询业务数据库的数据,与报表中结果数据对比。查询上游明细数据与报表结果数据对比。
原创
发布博客 2024.06.04 ·
292 阅读 ·
3 点赞 ·
0 评论 ·
0 收藏

(12)spark sql --操作 Mysql & Hive 代码实现

spark sql --读取 Mysql & Hive 数据MysqlHiveMysqlSpark SQL可以通过JDBC从关系型数据库中读取数据的方式创建DataFrame,通过对DataFrame一系列的计算后,还可以将数据再写回关系型数据库中。可在启动shell时指定相关的数据库驱动路径,或者将相关的数据库驱动放到spark的类路径下。1)启动spark-shellbin/spark-shell --master spark://hadoop102:7077 [--jars mysq
原创
发布博客 2022.03.03 ·
1456 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

(10)spark sql 笔记--01基本使用

spark sql 数据结构上下文环境对象DataFrame语法风格DataSetRDD & DataFrame & DataSet 三者 相互转化UDF函数数据结构有两种数据结构:DataFrame: 在原有RDD的基础上 加上一个结构(类似于字段名),如下(数据类型是弱类型,靠spark自动推断)+----+-------+| age| name|+----+-------+|null|Michael|| 30| Andy|| 19| Justin|
原创
发布博客 2022.03.03 ·
1792 阅读 ·
2 点赞 ·
0 评论 ·
0 收藏

(9)累加器 & 广播变量

累加器 & 广播变量累加器为什么要使用累加器如果不使用累加器 求和,如下代码:使用累加器之后累加器怎么使用系统累加器自定义累加器累加器为什么要使用累加器如果不使用累加器 求和,如下代码: val sparkConf = new SparkConf().setMaster("local[*]").setAppName("flatmap") val sc = new SparkContext(sparkConf) val rdd = sc.makeRDD(List(1,2
原创
发布博客 2022.02.28 ·
533 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

(8)RDD分区器

object spark_mypartitioner { def main(args: Array[String]): Unit = { val sparkConf = new SparkConf().setMaster("local[*]").setAppName("flatmap") val sc = new SparkContext(sparkConf) val rdd = sc.makeRDD(List( ("apple","xxx"), ("p
原创
发布博客 2022.02.28 ·
341 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

(7)RDD缓存 & 检查点

RDD缓存为啥需要缓存将计算结果缓存到内存或磁盘中,供后面重用。因为RDD中不存储数据,如果一个RDD需要重复使用,那么需要从头再次执行来获取数据,所以为了解决这个问题,RDD提供了缓存的方法在数据执行较长,或数据比较重要的场合也可以采用持久化操作。如果数据后续出现问题,就不用从头再执行一遍了,提高了数据的安全性怎么缓存?persist方法 & cache方法使用persist方法或cache方法( 但是并不是这两个方法被调用时立即缓存,而是触发后面的action时,该RDD
原创
发布博客 2022.02.27 ·
1109 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

(6)RDD依赖关系

RDD依赖关系Lineage (血缘)依赖关系是两个RDD之间,RDD1用到了 RDD2,那么RDD1依赖于RDD2,血缘就是多个RDD之间的依赖关系。RDD的Lineage会记录RDD的元数据信息和转换行为,当该RDD的部分分区数据丢失时,它可以根据这些信息来重新运算和恢复丢失的数据分区。 val reduceRdd = sc.textFile("datas/word.txt") .flatMap(_.split(" ")) .map((_, 1)) .r
原创
发布博客 2022.02.27 ·
371 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

(5)spark RDD 序列化

RDD 序列化从计算的角度, 算子以外的代码都是在Driver端执行, 算子里面的代码都是在Executor端执行。那么在scala的函数式编程中,就会导致算子内经常会用到算子外的数据,这样就形成了闭包的效果。如果使用的算子外的数据无法序列化,就意味着无法传值给Executor端执行,就会发生错误,所以需要在执行任务计算前,检测闭包内的对象是否可以进行序列化,这个操作我们称之为闭包检测。object serializable { def main(args: Array[String]): U
原创
发布博客 2022.02.25 ·
632 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

(4)spark RDD 算子练习

1)数据准备agent.log:时间戳,省份,城市,用户,广告,中间字段使用空格分隔。2)需求描述统计出每一个省份每个广告被点击数量排行的Top3 /** agent.log: *时间戳,省份,城市,用户,广告,中间字段使用空格分隔。 */ // TODO 需求: 统计出每一个省份 广告被点击数量排行的Top3 val agentRdd = sc.textFile("Input/sparkCore/agent.log") agentRdd
原创
发布博客 2022.02.24 ·
783 阅读 ·
1 点赞 ·
0 评论 ·
2 收藏

(3)spark RDD算子详解

RDD 算子其实就是rdd方法,和scala方法区分开来分为两种 转换算子 和行动算子转换算子功能的补充封装 将旧的RDD包装成新的RDD比如 map flatmapRDD整体上分为Value类型、双Value类型和Key-Value类型map算子 – Value类型每次处理一条数据,对数据或数据类型进行转换 def main(args: Array[String]): Unit = { val sparkConf = new SparkConf().setMaster("lo
原创
发布博客 2022.02.24 ·
1593 阅读 ·
2 点赞 ·
0 评论 ·
2 收藏

(2)Spark RDD定义 执行原理

RDD定义RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据处理模型。代码中是一个抽象类,它代表一个弹性的、不可变、可分区、里面的元素可并行计算的集合。spark的最小计算单元RDD,通过组合,让功能越来越强大。装饰者设计模式,逐层的增加功能的扩展。如下图RDD的数据只有在调用collect方法时,才会真正执行业务逻辑操作。之前的都是功能扩展,RDD是不保存数据的。执行原理Spark框架在执行时,先申请资源,然后将应用程序的数据
原创
发布博客 2022.02.18 ·
164 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

(1)Spark运行架构 核心概念简单理解

运行架构Spark框架的核心是一个计算引擎,它采用了标准 master-slave (主从)的结构。Driver 是master,负责管理整个集群中的作业任务调度,驱使整个应用运行起来的程序。Executor 则是 slave,负责实际执行任务。如图所示:核心概念Executor与Core在提交应用时,可以提供参数指定计算节点的个数,以及对应的资源。这里的资源一般指的是工作节点Executor的内存大小和使用的虚拟CPU核(Core)数量。应用程序相关启动参数如下:–num-execut
原创
发布博客 2022.02.17 ·
202 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

(7)scala 集合定义 & 常用方法

集合定义:Scala的集合有三大类:序列Seq、集Set、映射Map,所有的集合都扩展自Iterable特质。对于几乎所有的集合类,Scala都同时提供了可变和不可变的版本,分别位于以下两个包可变集合可以在适当的地方被更新或扩展。这意味着你可以修改,添加,移除一个集合的元素。不可变集合类,相比之下,永远不会改变。不过,你仍然可以模拟添加,移除或更新操作。但是这些操作将在每一种情况下都返回一个新的集合,同时使原来的集合不发生改变。...
原创
发布博客 2022.02.16 ·
432 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

(6)scala中的隐式转换

隐式转换scala允许开发人员自定义类型转换规则将两个无关的类型通过编程手段让他们自动转换隐式函数object ScalaImplicit { def main(args: Array[String]): Unit = { //定义隐式函数 让Double 类型的变量自动转换为int类型 implicit def transform( d : Double ): Int = { d.toInt } var d :
原创
发布博客 2022.02.14 ·
701 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

(5)scala 高阶面向对象编程

高阶面向对象编程继承和Java一样,使用extends关键字,子类继承父类的方法和属性class Person {}class User extends Person {}子类重写父类方法 之 动态绑定机制class Person {def test()=}class User extends Person {}抽象抽象类,使用abstract 关键字abstract class Person { //抽象属性 只有声明没有初始化 var name:String
原创
发布博客 2022.02.14 ·
728 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

(4)scala面向对象编程 (一)基础

scala面向对象编程基础面向对象编程包的声明import类属性访问权限方法对象构造方法高阶面向对象编程继承子类重写父类方法 之 动态绑定机制抽象基础面向对象编程笔记来自教程:https://www.bilibili.com/video/BV1aP4y1a7uC?p=25包的声明Java中package包的语法比较单一,Scala对此进行扩展scala同一个源码文件中,包可以多次声明包名可以和文件路径不一致在包中声明的类,调用时,导入最后的那个包(从上到下,声明的所有包的路径联合)sca
原创
发布博客 2022.02.09 ·
789 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

(3)scala函数式编程(三)惰性函数 和 异常处理

1.惰性函数定义:函数的执行将被推迟,直到我们首次对此取值,该函数才会执行。这种函数我们称之为惰性函数。声明方法:加入lazy关键字 lazy val res = sum(1,2) println("-----------------------") println("res=" + res) //当需要使用到res时,就会真正的开始计算2.异常处理scala也是用try catch来捕获异常,和java类似,但写法不太相同object Exception { def main(ar
原创
发布博客 2022.01.17 ·
282 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

(2)scala函数式编程(二)闭包和柯里化 的理解

1.闭包可以将函数作用域外的自由变量 捕获 而 而构成一个封闭的函数scala> def addBase(x:Int) = (y:Int) => x + yaddBase: (x: Int)Int => IntaddBase可以理解为返回值为函数的方法(y:Int) => x + y是一个匿名函数,这个匿名函数的入口参数是y代码展示:scala> val addOne = addBase(1)addOne: Int => Int..
原创
发布博客 2022.01.17 ·
205 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

(1) scala 函数式编程(一) 函数定义 函数概念

函数在scala可以做任何事情函数可以作为另一个函数的参数函数可以作为另一个函数的返回值函数可以赋值给一个变量1.
原创
发布博客 2022.01.12 ·
226 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多