董可伦
博主曾获2014年全国数学建模竞赛国家一等奖;有八年大数据经验,大数据领域专家、优快云博客专家。Apache Hudi Active Contributor,喜欢开源,擅长并乐于分享Flink、Hudi、Spark等大数据领域的技术
展开
-
Spark 源码 | 脚本分析总结
最初是想学习一下Spark提交流程的源码,比如 Spark On Yarn 、Standalone。之前只是通过网上总结的文章大概了解整体的提交流程,但是每个文章描述的又不太一样,弄不清楚到底哪个说的准确,比如Client 和 CLuster 模式的区别,Driver到底是干啥的,是如何定义的,为了彻底弄清楚这些疑问,所以决定学习一下相关的源码。因为不管是服务启动还是应用程序启动,都是通过脚本提交的,所以我们先从分析脚本开始。原创 2025-02-10 16:29:02 · 1552 阅读 · 0 评论 -
Spark RPC 学习总结
本文从API层面学习总结Spark RPC,暂不涉及源码分析。原创 2025-01-15 15:50:30 · 1620 阅读 · 0 评论 -
spark ML算法之线性回归使用
本文是讲如何使用spark ml进行线性回归,不涉及线性回归的原理。原创 2018-05-09 20:51:17 · 4576 阅读 · 5 评论 -
Hudi extraMetadata 研究总结
研究总结 Hudi extraMetadata ,记录研究过程。主要目的是通过 extraMetadata 保存 source 表的 commitTime (checkpoint), 来实现增量读Hudi表写Hudi表时,保存增量读状态的事务性,实现类似于流任务中的 exactly-once。原创 2024-06-13 19:33:37 · 400 阅读 · 0 评论 -
Hudi CLI 安装配置总结
上篇文章总结了Spark SQL Rollback, Hudi CLI 也能实现 Rollback,本文总结下 Hudi CLI 安装配置以及遇到的问题。原创 2024-06-07 16:46:51 · 290 阅读 · 0 评论 -
Hudi Spark Sql Procedures 回滚 Hudi 表数据
因为有 Hudi Rollback 的需求,所以单独总结 Hudi Spark Sql Procedures Rollback。原创 2024-06-04 15:47:02 · 399 阅读 · 2 评论 -
记录一个 Hudi HBase 依赖冲突问题及解决方案
如题:记录一个 Hudi HBase 依赖冲突问题及解决方案。原创 2024-06-01 15:45:50 · 300 阅读 · 0 评论 -
Spark Client 配置
记录Spark Client 配置,这里的 Spark Client 和 HDFS、YARN 不在一个节点,只是一个单节点的 Spark Client,需要能连接其他节点的大数据集群的 Hive 和 能提交到Yarn。原创 2024-05-18 15:23:51 · 256 阅读 · 0 评论 -
Spark Standalone 集群配置
平时工作中主要用 YARN 模式,最近进行TPC测试用到了 Standalone 模式,便记录总结一下 Standalone 集群相关的配置。原创 2024-02-07 16:35:51 · 595 阅读 · 0 评论 -
Spark SQL增量查询Hudi表
Hive增量查询Hudi表。最近可能会有Spark SQL增量查询Hudi表的需求,并且我发现目前用纯Spark SQL的形式还不能直接增量查询Hudi表,于是进行学习总结一下。本文总结了Spark SQL增量查询Hudi表的一些参数设置,并给出了示例,介绍了使用纯Spark SQL实现增量查询Hudi表的几种方式,不确定未来社区会采用哪种方式,大家目前如果有这种需求的话,可以先选择一种自己喜欢的方式,等未来社区版本支持后,再升级版本。原创 2022-12-01 08:07:23 · 5277 阅读 · 59 评论 -
Hudi Spark SQL Call Procedures学习总结(一)(查询统计表文件信息)
学习总结Hudi Spark SQL Call Procedures,Call Procedures在官网被称作存储过程(Stored Procedures),它是在Hudi 0.11.0版本由腾讯的ForwardXu大佬贡献的,它除了官网提到的几个Procedures外,还支持其他许多Procedures命令。本文先学习其中的几个我觉得比较常用的命令,主要是查询统计表路径下的各种文件信息。原创 2022-11-25 07:00:00 · 2171 阅读 · 38 评论 -
Hudi源码|bootstrap源码分析总结(写Hudi)
利用Hudi Bootstrap转化现有Hive表的parquet/orc文件为Hudi表本文简单的对Hudi bootstrap的一些关键的源码逻辑进行了分析,希望能对大家有所帮助。限于精力及能力的原因,有些地方可能不够深入,或者不对的地方,还请大家多多指正,让我们共同进步。原创 2022-10-18 10:38:36 · 3015 阅读 · 134 评论 -
利用Hudi Bootstrap转化现有Hive表的parquet/orc文件为Hudi表
在最开始学习Hudi源码时,就发现了Hudi有一个Bootstrap功能,但是一直没用过,通过官网文档可知,它可以将现有的表件转化为Hudi表,而且有两种类型和,但是文档并不详细,比如这两种类型的区别具体是啥,支持哪些文件类型的源表。于是带着这些疑问来学习一下它是如何使用的以及源码原理的实现,这样可以更全面的了解Hudi。本文介绍了如何利用Hudi Bootstrap转化现有Hive表为Hudi表,提供了完整的代码示例,并分析了和。原创 2022-10-12 16:25:50 · 1821 阅读 · 20 评论 -
Spark 读写 Ceph S3入门学习总结
主要总结了Spark读写Ceph S3文件的配置和代码示例,以及一些异常的解决方法,希望能对大家有所帮助。原创 2022-09-29 19:55:26 · 707 阅读 · 2 评论 -
Hudi Spark SQL源码学习总结-select(查询)
上一篇文章Hudi Spark源码学习总结-spark.read.format(“hudi”).load分析了load方法直接查询Hudi表路径的源码逻辑,那么Spark SQL select 表名的方式和load最终走的逻辑是一样的吗?本文带着这个疑问来分析一下select查询Hudi表的源码逻辑通过上面的分析,我们发现Spark查询Hudi表不管是通过load的方式还是通过sqlselect的方法最终走的逻辑都是一样的。都是先查找source=hudi的DataSource,Spark2对应的为。...原创 2022-08-17 09:52:25 · 660 阅读 · 1 评论 -
Hudi Spark源码学习总结-spark.read.format(“hudi“).load(2)
补充上一篇文章Hudi Spark源码学习总结-spark.read.format(“hudi”).load,由于上篇文章篇幅已经比较长了,所以单独写一篇补充一下,没有读过的可以先阅读一下,我们在上篇文章讲到返回的是,那么如果返回呢?本文总结了使用和的原因以及使用时查询Hudi的逻辑,知道了在使用是通过buildScan实现查询的。我在文章学习时,了解到是通过调用buildScan方法来获取数据源的RDD,所以也想看一下的buildScan方法是否也会在查询时用到以及什么情况下会用到,现在还不确定它和。..原创 2022-08-15 14:59:59 · 755 阅读 · 1 评论 -
Hudi Spark源码学习总结-spark.read.format(“hudi“).load
由于工作原因,之前查询Hudi主要是用Hive来查询的,所以对Hive查询Hudi的逻辑比较了解,但是对于Spark查询Hudi的逻辑不太了解。所以现在想要学习一下Spark查询Hudi的大概逻辑,搞清楚它是如何从Spark的源码跳转到Hudi源码执行Hudi查询的逻辑, 这样既能搞清楚Spark查询表的逻辑,也能搞清楚Spark查询Hudi的逻辑,也便于再后面使用Kyuubi Spark SQL 时出现问题能更好的定位解决。...原创 2022-08-11 15:11:27 · 1116 阅读 · 1 评论 -
Hudi Spark源码学习总结-df.write.format(“hudi“).save
在开始学习Hudi的时候,我们知道通过可以实现写Hudi,并且写Hudi的逻辑是在实现的,但是始终有一个疑问:它怎么从跳到中的呢?本文就是主要来回答这个问题的。本文分析总结了从到的调用逻辑,解决了自己最开始学习Hudi时的一个疑惑😄,希望对大家也能有所帮助。......原创 2022-08-03 18:37:45 · 1139 阅读 · 1 评论 -
Hudi Spark SQL源码学习总结-CTAS
上一篇文章Hudi Spark SQL源码学习总结-Create Table总结了Create Table的源码执行逻辑,这一篇继续总结CTAS,之所以总结CTAS,是之前在我提交的一个PR中发现,Spark2和Spark3.2.1版本的CTAS的逻辑不一样,最终走的Hudi实现类也不一样,所以本文分Spark2和Spark3.2.1两个版本分析......原创 2022-08-01 10:39:16 · 1024 阅读 · 1 评论 -
Hudi Spark SQL源码学习总结-Create Table
简要总结HudiSparkSql源码执行逻辑,从建表开始。其实从去年开始接触Hudi的时候就研究学习了HudiSparkSQL的部分源码,并贡献了几个PR,但是完整的逻辑有些地方还没有完全梳理清楚,所以现在想要从头开始学习,搞懂一些知识难点,这样以后看相关源码的时候就不会导致因为一些关键点不懂影响进度。由于本人能力和精力有限,本文只讲解自己觉得比较关键的点,主要目的是梳理整个流程。搞懂了SparkSQL默认的sqlParser为,那么Hudi是一样的吗?那我们就需要看一下开始的这里的f为为。...原创 2022-07-22 09:19:31 · 1826 阅读 · 1 评论 -
Spark3.12+Kyuubi1.5.2+kyuubi-spark-authz源码编译打包+部署配置HA
记录Spark3.1.2+Kyuubi1.5.2从源码打包到部署配置过程,虽然之前总结过一篇Kyuubi配置的文章:Kyuubi 安装配置总结,但是这次和之前还是有不同的:先讲完整的配置,再讲如何编译打包前提:我的环境上有一个ambari自带的Spark2.4.5,路径解压Spark3.1.2的tgz包,将其放到路径 (新建临时目录),并改名为spark3,然后拷贝之前spark2的配置到spark3的配置目录中,已经存在的模板,输入不用覆盖如果是在windows上自己打的包,传到服务器Linux上可能存原创 2022-07-12 11:08:59 · 1996 阅读 · 7 评论 -
Hudi查询类型/视图总结
上面文章Hive增量查询Hudi表提到Hudi表有读优化视图和实时视图,其实当时并没有完全掌握,所以现在单独学习总结。Hudi官网文档中文称之为视图,其实英文为query types翻译过来为查询类型Hudi 支持下面三种视图Snapshot Queries 快照查询/实时视图 Queries see the latest snapshot of the table as of a given commit or compaction action. In case of merge on read tab原创 2022-07-04 19:47:39 · 1220 阅读 · 1 评论 -
Hudi DeltaStreamer使用总结
总结如何利用Hudi DeltaStreamer工具从外部数据源读取数据并写入新的Hudi表,是hudi-utilities-bundle的一部分,按照Apache Hudi 入门学习总结,将hudi-spark-bundle包拷贝至$SPARK_HOME/jars目录下即可。提供了从DFS或Kafka等不同来源进行摄取的方式,并具有以下功能。命令行选项更详细地描述了这些功能:最新版本应该支持了更多参数,可以查阅官网:https://hudi.apache.org/cn/docs/hoodie_delta原创 2022-06-24 14:00:28 · 1350 阅读 · 0 评论 -
Hudi Spark SQL总结
前言总结Hudi Spark SQL的使用,本人仍然以Hudi0.9.0版本为例,也会稍微提及最新版的一些改动。Hudi 从0.9.0版本开始支持Spark SQL,是由阿里的pengzhiwei同学贡献的,pengzhiwei目前已不负责Hudi,改由同事YannByron负责,现在又有ForwardXu贡献了很多功能特性,目前好像主要由ForwardXu负责。三位都是大佬,都是Apache Hudi Committer,膜拜大佬,向大佬学习!!!大佬的github:彭志伟(阿里) pengzhi原创 2022-05-18 20:39:38 · 1565 阅读 · 32 评论 -
Apache Hudi 入门学习总结
前言学习和使用Hudi近一年了,由于之前忙于工作和学习,没时间总结,现在从头开始总结一下,先从入门开始Hudi 概念Apache Hudi 是一个支持插入、更新、删除的增量数据湖处理框架,有两种表类型:COW和MOR,可以自动合并小文件,Hudi自己管理元数据,元数据目录为.hoodie,具体的概念可以查看官网https://hudi.apache.org/cn/docs/0.9.0/overviewHudi 学习Hudi 官网 https://hudi.apache.org/cn/docs/原创 2022-05-16 19:58:51 · 1756 阅读 · 16 评论 -
Spark Streaming连接Kafka入门教程
转载请务必注明原创地址为:https://dongkelun.com/2018/05/17/sparkKafka/前言首先要安装好kafka,这里不做kafka安装的介绍,本文是Spark Streaming入门教程,只是简单的介绍如何利用spark 连接kafka,并消费数据,由于博主也是才学,所以其中代码以实现为主,可能并不是最好的实现方式。1、对应依赖根据kafka版本选...原创 2018-05-18 16:19:19 · 5335 阅读 · 1 评论 -
Spark性能优化:基于分区进行操作
我的原创地址:https://dongkelun.com/2018/09/02/sparkMapPartitions/前言(摘自Spark快速大数据分析)基于分区对数据进行操作可以让我们避免为每个数据元素进行重复的配置工作。诸如打开数据库连接或创建随机数生成器等操作,都是我们应当尽量避免为每个元素都配置一次的工作。Spark 提供基于分区的map 和foreach,让你的部分代码只对RDD...原创 2018-09-07 15:09:28 · 2379 阅读 · 0 评论 -
Spark 创建RDD、DataFrame各种情况的默认分区数
我的原创地址:https://dongkelun.com/2018/08/13/sparkDefaultPartitionNums/前言熟悉Spark的分区对于Spark性能调优很重要,本文总结Spark通过各种函数创建RDD、DataFrame时默认的分区数,其中主要和sc.defaultParallelism、sc.defaultMinPartitions以及HDFS文件的Block数......原创 2018-08-14 10:55:37 · 19372 阅读 · 12 评论 -
Spark SQL 优化笔记
前言记录自己在工作开发中遇到的SQL优化问题1、避免用in 和 not in解决方案:用exists 和 not exists代替用join代替not exists示例not in:select stepId,province_code,polyline from route_step where stepId not in (select stepId from stepId...原创 2019-02-01 16:21:49 · 1564 阅读 · 3 评论 -
SparkStreaming+Kafka 实现统计基于缓存的实时uv
转载请务必注明原创地址为:https://dongkelun.com/2018/06/25/KafkaUV/前言本文利用SparkStreaming+Kafka实现实时的统计uv,即独立访客,一个用户一天内访问多次算一次,这个看起来要对用户去重,其实只要按照WordCount的思路,最后输出key的数量即可,所以可以利用SparkStreaming+Kafka 实现基于缓存的实时wordc...原创 2018-07-06 16:45:20 · 4454 阅读 · 1 评论 -
Spark 异常总结及解决办法
我的原创地址:https://dongkelun.com/2019/01/09/sparkExceptions/前言总结Spark开发中遇到的异常及解决办法,之前也写过几篇,之所以不再一个异常写一篇博客,是因为现在Spark用的比较熟悉了一些,觉得没必要把异常信息写那么详细了,所以就把异常总结在一篇博客里了,这样既能备忘也方便查找。1、之前的几篇spark-submit报错:Excep......原创 2019-02-28 08:54:04 · 17328 阅读 · 4 评论 -
利用Spark实现Oracle到Hive的历史数据同步
我的原创地址:https://dongkelun.com/2018/08/27/sparkOracle2Hive/1、需求背景和上一篇文章Spark通过修改DataFrame的schema给表字段添加注释一样,通过Spark将关系型数据库(以Oracle为例)的表同步的Hive,这里讲的只是同步历史数据,不包括同步增量数据。2、Oracle和Hive的字段类型对应利用Spark...原创 2018-09-03 13:43:46 · 3212 阅读 · 0 评论 -
Spark操作Hive分区表
我的原创地址:https://dongkelun.com/2018/12/04/sparkHivePatition/前言前面学习总结了Hive分区表,现在学习总结一下Spark如何操作Hive分区表,包括利用Spark DataFrame创建Hive的分区表和Spark向已经存在Hive分区表里插入数据,并记录一下遇到的问题以及如何解决。1、Spark创建分区表只写主要代码,完整代码见附录......原创 2018-12-07 00:11:32 · 12544 阅读 · 11 评论 -
spark-submit提交Spark Streamming+Kafka程序
转载请务必注明原创地址为:https://dongkelun.com/2018/06/19/sparkSubmitKafka/前言Spark Streaming本身是没有Kafka相关的jar包和API的,如果想利用Spark Streaming获取Kafka里的数据,需要自己将依赖添加SBT或Maven项目中,添加依赖更新项目之后,就可以在Eclipse等IDE里直接运行Spark St...原创 2018-06-28 17:09:31 · 3284 阅读 · 0 评论 -
Spark Sql 连接mysql
转载请务必注明原创地址为:http://dongkelun.com/2018/03/21/sparkMysql/1、基本概念和用法(摘自spark官方文档中文版)Spark SQL 还有一个能够使用 JDBC 从其他数据库读取数据的数据源。当使用 JDBC 访问其它数据库时,应该首选 JdbcRDD。这是因为结果是以数据框(DataFrame)返回的,且这样 Spark SQL操作轻松或便......原创 2018-05-09 00:28:27 · 16859 阅读 · 4 评论 -
Spark读取压缩文件
转载请务必注明原创地址为:https://dongkelun.com/2018/05/30/sparkGZ/前言本文讲如何用spark读取gz类型的压缩文件,以及如何解决我遇到的各种问题。1、文件压缩下面这一部分摘自Spark快速大数据分析: 在大数据工作中,我们经常需要对数据进行压缩以节省存储空间和网络传输开销。对于大多数Hadoop输出格式来说,我们可以指定一种压缩编......原创 2018-06-05 22:40:02 · 19724 阅读 · 1 评论 -
SparkStreaming+Kafka 实现基于缓存的实时wordcount程序
转载请务必注明原创地址为:https://dongkelun.com/2018/06/14/updateStateBykeyWordCount/前言本文利用SparkStreaming和Kafka实现基于缓存的实时wordcount程序,什么意思呢,因为一般的SparkStreaming的wordcount程序比如官网上的,只能统计最新时间间隔内的每个单词的数量,而不能将历史的累加起来,本...原创 2018-06-25 09:44:58 · 1747 阅读 · 1 评论 -
Spark UDF使用详解及代码示例
本文介绍如何在Spark Sql和DataFrame中使用UDF,如何利用UDF给一个表或者一个DataFrame根据需求添加几列,并给出了旧版(Spark1.x)和新版(Spark2.x)完整的代码示例。下面以Spark2.x为例给出代码,关于Spark1.x创建DataFrame可在最后的完整代码里查看。2、Spark Sql用法...原创 2018-08-03 09:17:53 · 32535 阅读 · 14 评论 -
spark连接hive(spark-shell和eclipse两种方式)
转载请务必注明原创地址为:http://dongkelun.com/2018/03/25/sparkHive/1、在服务器(虚拟机)spark-shell连接hive1.1 将hive-site.xml拷贝到spark/conf里cp /opt/apache-hive-2.3.2-bin/conf/hive-site.xml /opt/spark-2.2.1-bin-hadoo...............原创 2018-05-09 09:14:40 · 16111 阅读 · 0 评论 -
Java 连接 Kerberos认证下的Spark Thrift Server/Hive Server总结
我的原创地址:https://dongkelun.com/2021/05/10/javaSparkThriftServerWithKerberos/前言总结Java如何连接Kereros认证下的Spark Thrift Server/Hive Server总结启动关于如何启动 Spark Thrift Server和 Hive Server 请参考https://dongkelun.com/2021/02/19/javaSparkThriftServer/Java 代码pom 依赖 &l原创 2021-11-29 19:05:38 · 2090 阅读 · 2 评论