12 2021 档案
摘要:一、Timeline Hudi 的核心是维护不同时间对表执行的所有操作的事件表,这有助于提供表的即时视图,同时还有效地支持按到达顺序进行数据检索。 Hudi 包含以下组件∶ 1)Instant action∶在表上的操作类型 2)Instant time∶ 操作开始的一个时间戳,该时间戳会按照开始时
阅读全文
摘要:一、将Hudi数据同步到Hive 1)需要将编译好的hudi-hadoop-mr-bundle-0.10.0.jar,放到对应的环境中,../CDH/jars 和 ../CDH/lib/hive/lib下面,具体步骤可以参考Flink1.3.1+Hudi0.10初探 cd /app/hudi-0.1
阅读全文
摘要:一、hudi编译 1)下载0.10版本的hudi,因为cdh6..2自带spark是2.4.0版本的,需要改下代码,注释掉整个if内容,否则会报错 2)将编译完成的hudi-spark-bundle_2.11-0.10.0.jar放到spark home的jars下 # 编译mvn clean pa
阅读全文
摘要:正常的SPARK SQL执行会先经过SQL Parser解析SQL,然后经过Catalyst优化器处理,最后到spark执行,其中包括以下几个重要的部分: SQL Parse:sql解析器将sql解析为抽象语法树,即Unresolved Logical Plan Analysis:利用Catalog
阅读全文
摘要:1)sc.textFile读取小文件时,调用的时hadoopFile,使用的是textInputFormat,除了使用sc.wholeTextFiles还可以自定义CombineFileInputFormat // sc.textFile调用的是 sc.hadoopFile,但是InputForma
阅读全文
摘要:一、全量表:df表,有无变化都要上报,只有一个分区或者没有分区,每次往全量表里面写数据都会覆盖之前的数据,不能记录数据的历史变化,只能截止到当前最新、全量的数据 二、增量表:每天新增的数据和改变的数据都会存储在当日的分区中;增量表记录每次增加的量,只报变化量,无变化的不用报;增量表设计过程,假设以1
阅读全文
摘要:自定义Listener来实现对spark任务的运行状态的监控: package org.shydow.example import org.apache.spark.internal.Logging import org.apache.spark.scheduler.{JobResult, Spar
阅读全文
摘要:由于业务需要调研数据湖的使用,这里以Hudi0.10为例,使用的是CDH6.2.1的集群。 一、编译Hudi0.10 在centos7上编译,需要配置maven,安装scala环境和docker环境,使用集群环境为CDH6.2.1 maven配置 tar -zxvf apache-maven-3.6
阅读全文
摘要:一、SPARK SQL的执行流程 二、spark支持的join包括:inner join,left outer join,right outer join,full outer join,left semi join,left anti join spark的join是将两张表抽象为遍历表和查找 s
阅读全文
摘要:在实际工作中统计uv时,一般会使用count(distinct userId)的方式去统计人数,但这样效率不高,假设你是统计多个维度的数据,当某天你想要上卷维度,此时又需要从原始层开始统计,如果数据量大的时候将会耗费很多时间,此时便可以使用最细粒度的聚合结果进行上卷统计,即需要自定义聚合函数进行统计
阅读全文
摘要:一、SPARK 其中top算子调用的takeOrdered算子,takeOrdered算子底层使用的是优先队列(BoundedPriorityQueue),首先进入的是mapPatition,然后使用reduce将每个分区数据进行合并 sortBy + take val url: URL = Lau
阅读全文
摘要:一般在使用mapPartition时,往往会跟随着文件的创建或者数据库的连接等,此时我们需要在创建一个容器,用于存储维表关联后的数据,但这有一个问题,创建的容器会占用内存的,这时我们可以使用迭代器进行优化。 一、普遍方法 package org.shydow import java.sql.{Con
阅读全文
摘要:一、CDH6.2中自带访问阿里云OSS的jar包,只需要将相应的jar放到./spark/jars目录下即可: cd /opt/cloudera/parcels/CDH/jarsmv aliyun-sdk-oss-2.8.3.jar ../lib/spark/jars/mv hadoop-aliyu
阅读全文
摘要:一、分布式架构 1)集中式:指由一台或者多台主计算机组成的中心节点,数据其中存储在这个中心节点中,并且整个业务单元都集中部署在这个中心节点上,系统的所有功能均由其集中处理。但是由于采用单机部署,难于维护,容易发生单点故障,扩展性差; 2)分布式:一个硬件或者软件分布在不同的网络计算机上,彼此之间仅仅
阅读全文
摘要:一、Spark的两种核心Shuffle Shuffle涉及磁盘的读写和网络的IO,因此shuffle性能的高低直接影响整个程序的性能。Spark也有map阶段和reduce阶段,因此也有Shuffle。 1)基于hash的shuffle 在每个Map阶段的task会为每个reduce阶段的task生
阅读全文
摘要:一、DataStream API 这里以通过Flink CDC采集MySQL的binlog日志实时写入ClickHouse中: package com.shydow; import com.alibaba.fastjson.JSONObject; import com.bangdao.bigdata
阅读全文
摘要:一、Kafka主要组件 1)producer(生产者):主要用于生产消息,是kafka当中的消息生产者,生产的消息通过topic进行归类,保存到kafka的broker里面去; 2)topic(主题):kafka将消息以topic为单位进行归类,主题始终支持多用户的订阅; 3)partition(分
阅读全文
摘要:一、配置KDC服务 由于使用的是内网机器,这里使用rpm包安装。需要的rpm包括: 服务端:krb5-server, krb5-workstation, krb5-libs,libkadm5 客户端:krb5-workstation, krb5-libs,libkadm5 下载地址:http://m
阅读全文
摘要:一、在一个有序数组中,查找某个数是否存在,时间复杂度O(logN) 这个基本的二分查找中有一个缺陷,在一些有重复元素的数组中,比如[1,2,2,2,3,3,4],这个数组中,假设我们查找2这个元素,我们会直接返回下标3,如果要寻找最左侧的数,显然不符合了。 public static int bin
阅读全文
摘要:一、Rowkey设计原则 Rowkey是按照字典顺序排序的,先比较第一个字节,如果相同,然后比对第二个字节,以此类推; 1)长度原则:是一个二进制字节流,可以是任意字符串,最大长度64kb,实际应用中一般为10-100bytes,以byte[]形式保存,一般设计为定长;建议不超过16个字节,设计过长
阅读全文
摘要:一、HBase读写流程 读流程 1)Client请求zk找到meta表的Region位置,meta中存储着用户表的Region信息; 2)根据命名空间,表名,rowkey等找到对应的Region信息; 3)根据Region信息请求对应的RegionServer,发送请求,查找对应的Region; 4
阅读全文
摘要:一、HBase的数据模型 1)Table:表名,在创建表时需要指定列族即可,也可以指定一些数据属性、超时时间和压缩算法等;create 'test', {NAME => 'info', VERSIONS => 1, COMPRESSION => 'LZO'},name是列族,compression是
阅读全文

浙公网安备 33010602011771号