大数据
文章平均质量分 63
lilyjoke
这个作者很懒,什么都没留下…
展开
-
Spark jdbc读写的数据对账功能和问题解决
3. 当某一条数据写入错误时,整个spark任务是失败状态,但是发现有部分数据已经成功写到表,有部分数据回退的情况。1. 注册JdbcRelationProvider,实现createRelation, 通过调用JdbcUtils.saveTable()方法实现写表功能。可以发现,savePartition是有做事务的,发生错误之后可以回退。2. saveTable的内部实现,可以看到主要实现方法是,拼接了一个insert的执行对象,然后根据写入的分区遍历写入。这个时候,其实是异步的,并不是串行的。原创 2023-03-29 11:44:06 · 581 阅读 · 0 评论 -
Hive表热度统计
通过解析hiveserver2的info日志,获取每个执行sql命令。通过durid对sql进行解析,获取对于表的操作,并写到数据库中。接口提供,最小粒度到分钟,给到应用做展现。原创 2023-03-08 15:09:23 · 351 阅读 · 0 评论 -
Spark SQL执行计划到RDD全流程记录
记录Spark SQL生成执行计划的全流程和代码跟踪。Spark版本是2.3.2。上图流程描述了Spark SQL 怎么转成Spark计算框架可以执行的分布式模型,下面结合一个样例,跟踪每个步骤。原创 2022-12-17 23:34:15 · 2193 阅读 · 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 · 2092 阅读 · 0 评论 -
Flink--Hybrid Source提出的动机及实现原理介绍
Hybrid Source的提出动机在实践中,许多Flink作业需要按顺序从多个数据源读取数据,具体有如下2个场景:Change Data Capture (CDC): 用户可以将数据的快照存储在HDFS/S3中,数据的更新日志存储在数据库binlog或Kafka中 机器学习特征回填: 当向模型添加新特性时,需要从几个月前到现在的原始数据计算该特性。在大多数情况下,历史数据和实时数据分别存储在两种不同的存储系统中,例如HDFS和Kafka。在过去,用户可能必须运行两个不同的Flink作业,或者在S转载 2022-04-15 11:57:39 · 740 阅读 · 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 · 4195 阅读 · 0 评论 -
Presto读Hive报错: Malformed ORC file. Cannot read SQL type ‘tinyint‘ from ORC stream...
向社区提了个Issue:Malformed ORC file. Cannot read SQL type 'boolean' from ORC stream '.illegal' of type INT with attributes · Issue #11428 · trinodb/trino (github.com)跟了代码之后,这样改了,实测是能解决了,也用到生产环境了。但是不一定能合到社区,发出来,给可能有类似问题的同学做下参考,抛砖引玉吧:Support 8-bit field typ原创 2022-03-22 15:52:30 · 5071 阅读 · 0 评论 -
Spark Sql Left Join(多对多)导致的数据膨胀问题和解决
问题:大表left join小表,小表有10万条,大概就10M大小。大表有30多亿条,对应分区下有40个HDFS文件,简单的一个left join,跑了几个小时跑不出结果。INSERT OVERWRITE TABLE 结果表 PARTITION(dt='20220302') select vertice,types,nvl(dstgid,groupid) as gid from ( select vertice,groupid,types from原创 2022-03-03 17:20:30 · 5781 阅读 · 0 评论 -
升级Spark 3.2的包冲突记录
升级Spark 3.2的包冲突记录原创 2022-01-28 14:38:38 · 3356 阅读 · 0 评论 -
Spark RDD Partition和Scheduler调度的梳理
问题来源业务同学报障,同一个Spark计算,数据源,执行代码和提交客户端配置都一模一样,第一次运行跑了几个小时没出数kill掉了,失败后第二次运行,跑了18分钟就出数了。我这边要分析一下原因,提供解决方案,避免业务再出现类似的问题。说明:该记录只是问题梳理,不会涉及任何业务信息。问题分析对比了Spark History的详情,以及日志,发现同样的执行计划,任务的并发数...原创 2022-01-03 14:51:27 · 1274 阅读 · 0 评论 -
Presto Hive Antlr SQL解析流程
要做Presto和Hive语法兼容可能要从物理执行计划层面都要改OMG 先占坑 后面梳理下原创 2021-12-28 16:37:39 · 666 阅读 · 0 评论 -
Spark 3.2 基于推送的Spark shuffle 服务
[SPARK-30602] SPIP: Support push-based shuffle to improve shuffle efficiency - ASF JIRA (apache.org)[SPARK-36374][SHUFFLE][DOC] Push-based shuffle high level user documentation by venkata91 · Pull Request #33615 · apache/spark · GitHub原创 2021-12-09 15:43:53 · 1747 阅读 · 0 评论 -
Spark On Yarn -- Spark Shuffle Service加载流程
最近要写一个spark on yarn的代码梳理,帮自己理清楚相关的服务脉络,先占个坑原创 2021-11-22 15:09:59 · 621 阅读 · 0 评论 -
presto内存配置逻辑梳理
presto内存配置逻辑梳理原创 2021-11-18 15:39:48 · 1134 阅读 · 0 评论 -
Presto UDF小坑--SimpleDateFormat线程安全问题
原文链接:还在使用SimpleDateFormat?你的项目崩没? | Felix (542869246.github.io)用SimpleDateFormat做时间格式转换,构造了一个全局的SimpleDateFormat,结果发现时间转出来五花八门,有些时间戳还有负数。public final class Test{ private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); //问题转载 2021-11-08 19:00:20 · 120 阅读 · 0 评论 -
Presto UDF 返回Map类型
最近在做presto改造和业务功能支持,需要做一个返回map的udf,网上例子比较少,官网也没有,因此记录下。Slice,Block,Page返回Map类型的UDF Demo/* * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtai原创 2021-10-30 20:09:10 · 1150 阅读 · 0 评论 -
基于mysql binlog和flink broadcast实现配置动态更新
在flink流式计算中,需要动态的更新配置,而无需重启作业进程。通过mysql binlog机制,可以实现配置的变化并可以捕获这一变化;通过flink的broadcast机制,可以将这一动态变化广播到业务流,并进行相应的逻辑处理,最终实现配置的动态更新。下面写一个简单的demo,仅供平时学习积累使用。CDCCDC全称Change Data Capture,变动数据捕获。它的核心思想是,监测并捕获数据库的变动,将这些变更按发生的顺序完整记录下来,写入到消息中间件中以供其他服务进行订阅及消费。m原创 2021-04-20 15:21:36 · 1040 阅读 · 4 评论 -
日常错误积累
问题1: 通过JDBC连接Hive报错,Required field ‘client_protocol’ is unset,错误栈如下图:原因:跟着代码走一遍错误栈就知道了,依赖的hive客户端jar包版本和访问的Hive服务端的版本不对应,客户端的hive-jdbc-#{version}.jar和服务端的hive-service-#{version}.jar版本要一致。...原创 2021-01-29 09:59:48 · 94 阅读 · 0 评论 -
kafka要点总结
做一个kafka的要点总结,官网或者博客都有大量资料目录基础术语副本机制Kafka数据备份Leader选举ISR集合方法少数服从多数方法如果所有的ISR副本都失败了怎么办Kafka数据commitISR配置宕机如何恢复少部分副本宕机全部副本宕机Zookeeper协调服务Zookeeper的watch机制Kafka分区策略Range...原创 2020-01-19 22:45:04 · 315 阅读 · 0 评论 -
大数据运维框架(二)--ansible的离线安装
网上有很多ansible安装的文章,但是局限于工作电脑是在局域网,无法在线获取安装包,于是整理了一个离线安装的脚本,亲测可用1. 安装环境RHEL 6.4自带python 2.72. 需要提前准备的安装包其中有一些包有多个版本,选择其中一个就可以,同时要注意修改脚本中的对应路径3. 安装脚本#!/bin/sh# 1.创建文件夹mkdir /opt/原创 2016-10-09 10:00:28 · 2711 阅读 · 0 评论 -
大数据运维框架(一)--几类比较常用的自动化运维工具
最近老大在做一个组内的大数据平台,基于spark框架,配套的,需要一个自动化运维平台来对组内业务的部署和配置和程序预警做一个支持。如此光荣的任务,老大交给了我,原因是啥do原创 2016-07-03 11:41:23 · 15678 阅读 · 0 评论 -
大数据运维框架(三)--运维框架参考:CDH cloudermanager & apache ambari
666原创 2016-10-12 09:52:55 · 1391 阅读 · 0 评论 -
hadoop权威指南读书总结
最近在看hadoop权威指南,巩固一下hadoop的基础知识。首先,hadoop是什么呢?Hadoop起源于Nutch, 源起于实现对海量数据的处理方式,中文也称之为‘云计算’。Hadoop就是云计算中的一个开源项目,它克隆了Google运行系统的主要框架,包括文件系统HDFS,计算架构MapReduce及对于结构化数据处理的HBAse等。而基于Hadoop,又出现了许多的开源项目,比如P翻译 2016-10-08 17:57:58 · 2111 阅读 · 0 评论 -
flume spoolDirectory Source原生代码流程及其拓展
最近小组要在flume的基础上做定制开发,以满足公司内部的业务使用。我这块主要的开发是对zip包中的文件做一定的处理后,以avro方式序列化,写入kafka。整个流程参考了flume的spoolDirectorySource的实现,因为主要是对spooldirectorySource中文件解析的部分进行了参考,所以下面的文章将会着重分析文件的解析部分。1、 spoolDirector原创 2017-09-08 16:12:55 · 2195 阅读 · 0 评论 -
orc文件写入+GC调优+java多线程+java静态类
好久没总结,说来惭愧,做了4年的开发,但是对于基础的概念总结还是很不完善,最近有可以写的东西,先做个引子和总结,等有空来写。1. flume自定义sink,用于写orc文件,直接挂到hive表上,相当于直接入库了。2. 并发程序中出现OOM的调优过程3. 并发概念总结4. 静态类的概念总结5. fs.automatic.close配置引起的乌龙6. hdfs的租约模型(df...原创 2018-07-17 15:26:23 · 660 阅读 · 3 评论 -
flume的事务实现
在flume的内部实现中事务是一个重要的概念,事务保证了数据的可用性(有别于数据库中的事务)。下图的数据流是spooling directory source-> memory channel-> kafka sink,其中memory channel维护了两个事务,分别是put事务和take事务。 下面简要介绍一下事务的代码实现:1. doPut(放入event)...原创 2018-08-02 17:29:00 · 3794 阅读 · 0 评论 -
基于flume框架的ORCSink开发中遇到的坑(一)
最近做了一个基于flume 1.7 的sink,用于写hdfs orc文件,中间遇到了几个坑,下面把思路和遇到的问题一一记录下来。1. 开发思路首先的实现场景是这样的:从channel拿数据-->sink拿到数据后做分类-->分类后将数据写入对应的orc文件->文件关闭。技术要点是这样:1.1 线程池管理hdfs操作在分类写orc文件这环节,我开了两个线程池,一...原创 2018-08-02 17:59:46 · 1971 阅读 · 3 评论 -
kafka入门:简介、使用场景、设计原理、主要配置及集群搭建http://www.aboutyun.com/thread-9341-1-1.html
文章转自:http://www.aboutyun.com/thread-9341-1-1.html问题导读:1.zookeeper在kafka的作用是什么?2.kafka中几乎不允许对消息进行“随机读写”的原因是什么?3.kafka集群consumer和producer状态信息是如何保存的?4.partitions设计的目的的根本原因是什么?转载 2016-05-29 19:32:31 · 1175 阅读 · 0 评论