
Spark
文章平均质量分 52
lilyjoke
这个作者很懒,什么都没留下…
展开
-
Spark jdbc读写的数据对账功能和问题解决
3. 当某一条数据写入错误时,整个spark任务是失败状态,但是发现有部分数据已经成功写到表,有部分数据回退的情况。1. 注册JdbcRelationProvider,实现createRelation, 通过调用JdbcUtils.saveTable()方法实现写表功能。可以发现,savePartition是有做事务的,发生错误之后可以回退。2. saveTable的内部实现,可以看到主要实现方法是,拼接了一个insert的执行对象,然后根据写入的分区遍历写入。这个时候,其实是异步的,并不是串行的。原创 2023-03-29 11:44:06 · 676 阅读 · 0 评论 -
Hive表热度统计
通过解析hiveserver2的info日志,获取每个执行sql命令。通过durid对sql进行解析,获取对于表的操作,并写到数据库中。接口提供,最小粒度到分钟,给到应用做展现。原创 2023-03-08 15:09:23 · 411 阅读 · 0 评论 -
Spark Sql表关联筛选行列转换窗口比较等代码实现
不涉及业务,记录基于Spark Sql框架和Scala语法,实现表的关联,筛选,聚合,行列转换,窗口比较等代码实现。Demo1,主要是通过字符串分割和flatmap实现行转列,通过聚合函数实现行转列。Demo2,定义窗口,通过row_number实现TopN。原创 2023-01-28 11:47:35 · 342 阅读 · 0 评论 -
Spark SQL执行计划到RDD全流程记录
记录Spark SQL生成执行计划的全流程和代码跟踪。Spark版本是2.3.2。上图流程描述了Spark SQL 怎么转成Spark计算框架可以执行的分布式模型,下面结合一个样例,跟踪每个步骤。原创 2022-12-17 23:34:15 · 2397 阅读 · 0 评论 -
Spark2.4升级到Spark 3.2后,小文件数增多的问题解决
全部原创,仅做问题分析记录,不涉及任何业务信息。问题描述数仓同学报障,说升级了spark3.2后,同样的一组SQL和配置,为什么最终写表的小文件从几个变成了500个,是不是distribute by rand()不生效了... :DSpark 3.2Spark 2.4首先问题的确是存在(虽然和distribute by rand()没关系。。。),最后一个insert操作,原来的分区只有几个,从上游job500个变成了几个,而现在都是500个,进一步分析。定位和解决.原创 2022-04-18 11:02:12 · 2240 阅读 · 0 评论 -
基于语法树解析Spark SQL 获取访问的表/字段/UDF等信息
最近有需求,需要拆解Spark SQL中的表,字段等信息,然后配合Ranger实现一些权限校验。其实难度不大,就是需要根据语法树做一些递归拆解,然后就能拆解出一段SQL中的相关信息,再创建一些数据结构bean对象用于配合校验。下面是部分源码(全部本人原创),不涉及业务信息。对于Presto我也做了拆解,欢迎沟通交流。import test.AccessType;import test.ColumnAccess;import test.ColumnsWithTable;import l原创 2022-04-13 10:59:22 · 4289 阅读 · 0 评论