自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 资源 (2)
  • 收藏
  • 关注

原创 元数据管理的价值

元数据管理到底有什么用?举例:图书馆的目录卡片就是一个很简单的元数据管理,在企业中,元数据管理会更为全面,难度更高,同时也将带来更多的收益:元数据管理平台为用户提供高质量、准确、易于管理的数据,它贯穿数据中心构建、运行和维护的整个生命周期。同时,在数据中心构建的整个过程中,数据源分析、ETL过程、数据库结构、数据模型、业务应用主题的组织和前端展示等环节,均需要通过相应的元数据的进行支撑。通过元数据管理,形成整个系统信息数据资的准确视图,通过元数据的统一视图,缩短数据清理周期、提高数据质量以便能系统性地

2021-01-24 23:07:54 783

原创 数据权限管控

“功能权限”控制的是用户登录系统后能看到哪些模块,操作哪些按钮;而“数据权限”控制的是用户能够看到的数据范围,所谓数据范围,不是指能看到的数据字段,而是指能查出来的数据集合。例如,针对订单管理列表页,数据范围可能是某个城市的全部订单,也可能是某个门店的全部订单,“某个城市”和“某个门店”决定了2种不同的数据范围。针对数据权限,常见的实现方案有两种:通过组织机构树实现,或者是通过数据共享配置实现。方案一,通过组织机构树实现。这种方案是根据用户所在组织机构树中的节点位置,来判断用户能够操作的数据范围,利用组

2021-01-23 23:51:29 1061

原创 说说 Flink的序列化如何做的

Java本身自带的序列化和反序列化的功能,但是辅助信息占用空间比较大,在序列化对象时记录了过多的类信息。Apache Flink摒弃了Java原生的序列化方法,以独特的方式处理数据类型和序列化,包含自己的类型描述符,泛型类型提取和类型序列化框架。TypeInformation 是所有类型描述符的基类。它揭示了该类型的一些基本属性,并且可以生成序列化器。TypeInformation 支持以下几种类型:BasicTypeInfo: 任意Java 基本类型或 String 类型BasicArrayType

2021-01-22 20:20:58 597

原创 数据倾斜以及处理

数据倾斜的直白概念:数据倾斜就是数据的分布不平衡,某些地方特别多,某些地方又特别少,导致的在处理数据的时候,有些很快就处理完了,而有些又迟迟未能处理完,导致整体任务最终迟迟无法完成,这种现象就是数据倾斜。针对mapreduce的过程来说就是,有多个reduce,其中有一个或者若干个reduce要处理的数据量特别大,而其他的reduce处理的数据量则比较小,那么这些数据量小的reduce很快就可以完成,而数据量大的则需要很多时间,导致整个任务一直在等它而迟迟无法完成。跑mr任务时常见的reduce的进度

2021-01-21 18:44:56 335

原创 什么是领域模型?什么是数据模型

领域模型关注的是领域知识,是业务领域的核心实体,体现了问题域里面的关键概念,以及概念之间的联系。领域模型建模的关键是看模型能否显性化、清晰的表达业务语义,扩展性是其次。数据模型关注的是数据存储,所有的业务都离不开数据,都离不开对数据的CRUD,数据模型建模的决策因素主要是扩展性、性能等非功能属性,无需过分考虑业务语义的表征能力。按照Robert在《整洁架构》里面的观点,领域模型是核心,数据模型是技术细节。然而现实情况是,二者都很重要。这两个模型之所以容易被混淆,是因为两者都强调实体(Entity),都

2021-01-20 21:05:14 1917 1

原创 请说一下你理解的主数据

“主数据”并不是一个很新鲜的概念,提出来已经有一些年头了,但却是比较符合当下潮流的概念。“主数据”所对应的,就是“人财物事”的数字化,以及背后应用到的整套技术体系。如果组织要实现数字化,那么主数据的概念,就绕不过去。在2018年中国信通院牵头编写的《主数据管理实践白皮书(1.0版)》中,主数据(MDM)定义的概念如下:“指满足跨部门业务协同需要的、反映核心业务实体状态属性的组织机构的基础信息。主数据相对于交易数据而言,属性更加稳定,准确度要求更高,唯一识别。”所以,数据从业者平时接触的很多数据,比如流量报

2021-01-19 21:37:44 237

原创 hive的几种存储格式

Text/CSVcsv文件不支持块压缩,所以在Hadoop中使用压缩的CSV文件经常会带来很低的读性能。无法存储元数据。新的字段只能追加到所有字段的尾部,并且不能产出已经存在的字段。支持有限的模式演进。JSON能够存储元数据。不支持块压缩。第三方的JSON SerDe工具能解决这些问题。全面支持模式演进。AvroAvro是Hadoop平台多功能的数据存储格式。它能够存储元数据,还可以把元数据单独存储到一个文件中。支持模式演进。因为Avro可以通过定义一个新的独立的模式文件来重命名、增加、删除和修改

2021-01-18 23:33:29 315

原创 说说你了解的exactly once

流处理(streaming process),有时也被称为事件处理(event processing),可以被简洁地描述为对于一个无限的数据或事件序列的连续处理。一个流,或事件,处理应用可以或多或少地由一个有向图,通常是一个有向无环图(DAG),来表达。在这样一个图中,每条边表示一个数据或事件流,而每个顶点表示使用应用定义好的逻辑来处理来自相邻边的数据或事件的算子。其中有两种特殊的顶点,通常被称作sources与sinks。Sources消费外部数据/事件并将其注入到应用当中,而sinks通常收集由应用产生

2021-01-17 21:40:48 167

原创 说一说有哪些类型的OLAP数仓?

1.按数据量划分对一件事物或一个东西基于不同角度,可以进行多种分类方式。对数仓产品也一样。偏实时的分析型数仓,Cloudera的Impala、Facebook的Presto和Pivotal的GreenPlum均属于这类系统;如果超过百亿级别数据量,那么一般选择离线数仓,如使用Hive或Spark等(SparkSQL3.0看起来性能提升很明显);对于数据量很小的情况,虽然是分析类应用,也可以直接选择普通的关系型数据库,比如MySQL等,“杀鸡焉用牛刀”。2.按建模类型划分下面我们主要关注数据量中等的分析

2021-01-16 19:33:28 874

原创 说说Flink集群有哪些角色?各自有什么作用?

Flink 程序在运行时主要有 TaskManager,JobManager,Client三种角色。其中JobManager扮演着集群中的管理者Master的角色,它是整个集群的协调者,负责接收Flink Job,协调检查点,Failover 故障恢复等,同时管理Flink集群中从节点TaskManager。TaskManager是实际负责执行计算的Worker,在其上执行Flink Job的一组Task,每个TaskManager负责管理其所在节点上的资源信息,如内存、磁盘、网络,在启动的时候将资源的状态

2021-01-15 22:02:21 802

原创 构建企业指标字典

1:目前各个数据集市中应用层数据存在指标统计粒度汇总不清晰,命名不规范,没有形成完善的按粒度统一的公共数据层,同粒度整合,实现数据的复用,不能只为了算指标而算指标,保证数据只加工一次。2:指标越来越多可能会暴露什么问题?相同口径指标名称不一致?指标口径描述不清晰,复用难?指标名难理解?计算逻辑不清晰?指标开发后,长时间遗忘,暴露出数据问题后增加解决问题的时间?如何解决:对指标进行全局梳理,输出企业的指标字典。最后形成一个全局业务口径一致的指标字典。让使用指标的人,可以通过指标字典,快速了解指标的业务含义

2021-01-14 20:19:20 427

原创 为什么要建设数据指标字典

**指标越来越多可能会暴露什么问题?相同口径指标名称不一致?指标口径描述不清晰,复用难?指标名难理解?计算逻辑不清晰?指标开发后,长时间遗忘,暴露出数据问题后增加解决问题的时间?如何解决:对指标进行全局梳理,输出企业的指标字典。最后形成一个全局业务口径一致的指标字典。让使用指标的人,可以通过指标字典,快速了解指标的业务含义和计算过程,不会对指标口径产生歧义。前期可以使用Excel作为指标管理的工具,按业务域、指标标准名称、BI展示名称、业务口径、所关联的报表、指标负责人、可分析的维度、业务含义、计算逻辑等

2021-01-14 20:15:17 568

原创 Flink集成Hive之Hive Catalog与Hive Dialect--以Flink1.12为例

什么是Hive Catalog我们知道,Hive使用Hive Metastore(HMS)存储元数据信息,使用关系型数据库来持久化存储这些信息。所以,Flink集成Hive需要打通Hive的metastore,去管理Flink的元数据,这就是Hive Catalog的功能。Hive Catalog的主要作用是使用Hive MetaStore去管理Flink的元数据。Hive Catalog可以将元数据进行持久化,这样后续的操作就可以反复使用这些表的元数据,而不用每次使用时都要重新注册。如果不去持久化ca

2021-01-13 21:42:36 654

原创 如何提高数据质量

要想提升数据质量,最重要的就是“早发现,早恢复”:早发现,是要能够先于数据使用方发现数据的问题,尽可能在出现问题的源头发现问题,这样就为“早恢复”争取到了大量的时间。早恢复,就是要缩短故障恢复的时间,降低故障对数据产出的影响。那具体如何做到这两个早呢?我总结了一套数据质量建设的方法,包括这样几个内容。添加稽核校验任务在数据加工任务中,对产出表按照业务规则,设计一些校验逻辑,确保数据的完整性、一致性和准确性,这是提升数据质量最行之有效的方法。通常建议你在数据产出任务运行结束后,启动稽核校验任务对数据

2021-01-12 21:40:07 2627

原创 如何衡量数据模型复用度

数据中台模型设计的核心是追求模型的复用和共享,通过元数据中心的数据血缘图,我们可以看到,一个比较差的模型设计,自下而上是一条线。而一个理想的模型设计,它应该是交织的发散型结构。用模型引用系数作为指标,衡量数据中台模型设计的复用度。引用系数越高,说明数仓的复用性越好。模型引用系数:一个模型被读取,直接产出下游模型的平均数量。比如一张 DWD 层表被 5 张 DWS 层表引用,这张 DWD 层表的引用系数就是 5,如果把所有 DWD 层表(有下游表的)引用系数取平均值,则为 DWD 层表平均模型引用系数

2021-01-11 20:14:35 1752

原创 基于Flink+Hive+Kafka的流批一体数仓实践--04Kafka_Sink_Kafka_DWD_OrderFull

Flink采用HiveCatalog作为表元数据持久化的介质。对于同时部署了Hive和Flink的公司来说,可以方便管理元数据,而对于只部署了Flink的公司来说,HiveCatalog也是Flink唯一支持的元数据持久化的介质。不将元数据持久化的时候,开发过程中的每个地方都需要使用DDL重新将Kafka等数据源的数据注册到临时的Catalog中,浪费了很多精力和时间。利用ODS的订单详情和订单明细数据进行操作。DWD层直接上代码import java.time.Durationimport org

2021-01-10 20:44:48 360

原创 什么才是一个好的数据模型设计

来看一组数据,这两个表格是基于元数据中心提供的血缘信息,分别对大数据平台上运行的任务和分析查询(Ad-hoc)进行的统计。离线调度任务/表统计一周内Ad-hoc 查询统计下图是数仓分层架构图,方便你回忆数据模型分层的设计架构:我们首先来看表 1。表 1 中有 2547 张未识别分层的表,占总表 6049 的 40%,它们基本没办法复用。 重点是在已识别分层的读表任务中,ODS:DWD:DWS:ADS 的读取任务分别是 1072:545:187:433,直接读取 ODS 层任务占这四层任务总

2021-01-09 21:56:19 721

原创 选择排序--scala

object SelectSort { def main(args: Array[String]): Unit = { //创建要给30个的随机的数组 val arr = new Array[Int](30) for (i <- 0 until 30) { arr(i) = (Math.random * 800).toInt // 生成一个[0, 800) 数 } System.out.println("排序前") //System.out.p

2021-01-08 20:11:48 163

原创 分治算法--汉诺塔应用(scala实现)

object Hanoitower { def main(args: Array[String]): Unit = { hanoiTower(5, 'A', 'B', 'C') } //汉诺塔的移动的方法 //使用分治算法 def hanoiTower(num: Int, a: Char, b: Char, c: Char): Unit = { //如果只有一个盘 if (num == 1) System.out.println("第 1 个盘从 " + a + "-&g

2021-01-07 19:52:33 273

原创 基于Flink+Hive+Kafka的流批一体数仓实践--03kafka_sink_kafka_ods

准备工作:搭建Hadoop、kafka、zk集群等(略)。脚本启动集群后,开启kafka主题消费:bin/kafka-console-consumer.sh --bootstrap-server hadoop002:9092 --from-beginning --topic GoodmeODS_orderMasterkafka_sink_kafka_ods代码如下:import java.time.Durationimport org.apache.flink.streaming.api.{C

2021-01-06 20:23:34 524

原创 基于Flink+Hive+Kafka的流批一体数仓实践--02模拟kafka生产数据

废话不多说,直接上代码,定义两个scala工具类,然后JsonMock模拟生产数据作为flink自定义数据源Goodme_Source。自定义数据源需要重写SourceFunction,后面再说。然后sink到Kafka。{"orderMaster":{"area":"周口","orderID":"1207687863","brandId":"Goodme","customerID":"1697","orderStatus":"40","orderChannel":"饿了么","storeCode":"3

2021-01-05 17:56:36 753

原创 基于Flink+Hive+Kafka的流批一体数仓实践--01架构及思想

基于Flink+HIve+Kafka的流批一体数仓实践–01架构及思想最近阅读了李劲松老师的一篇文章,决定基于他的思想实践一把。为什么需要实时数仓?基于 Hive 的离线数仓往往是企业大数据生产系统中不可缺少的一环。Hive 数仓有很高的成熟度和稳定性,但由于它是离线的,延时很大。在一些对延时要求比较高的场景,需要另外搭建基于 Flink 的实时数仓,将链路延时降低到秒级。但是一套离线数仓加一套实时数仓的架构会带来超过两倍的资源消耗,甚至导致重复开发。想要搭建流式链路就必须得抛弃现有的 Hive 数

2021-01-04 19:10:23 1706

原创 解决第三方客户端连接hive出错问题serverProtocolVersion is unset

本来用的hive1.2.1版本,现在升级到2.3.6之后dbeaver连不上hive了。启动hiverserver2 后用第三方客户端连接(用的第三方客户端自带的驱动):出现错误,连不上!*Required field ‘serverProtocolVersion’ is unset! Struct:TOpenSessionResp(status:TStatus(statusCode:ERROR_STATUS, infoMessages:[org.apache.hive.service.cli.Hiv

2020-06-19 11:49:41 7757 3

原创 Could not open client transport with JDBC Uri: jdbc:hive2://hadoop002:10000/default: java.net.Connec

今天使用Dbeaver连接hive使用的好好的,然后突然连不上了。Could not open client transport with JDBC Uri: jdbc:hive2://hadoop002:10000/default: java.net.ConnectException: Connection refused: connectjava.net.ConnectException: Connection refused: connectjava.net.ConnectException:

2020-06-08 00:35:00 1140

原创 启动hive的时候 java.io.IOException: 设备上没有空间

然后检查logs日志。全部清空,成功启动hive。

2020-06-07 16:45:55 776

原创 第一篇:稀疏数组 sparsearray

**先看一个实际的需求**编写的五子棋程序中,有存盘退出和续上盘的功能。因为该二维数组的很多值是默认值 0, 因此记录了很多没有意义的数据.->稀疏数组。**基本介绍**当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。稀疏数组的处理方法是:稀疏数组第一行记录原始数组一共有几行几列,有多少个不同的值把具有不同值的元素的行列及值记录在一个小规模的数组(稀疏数组)中,从而缩小程序的规模稀疏数组举例说明**应用实例**使用稀疏数组,

2020-05-23 17:57:57 186

原创 IDEA中执行scala程序报错Error:scalac: Error: scala/Function1 java.lang.NoClassDefoundError:Scala/Function1

**首先**<dependency> <groupId>org.scala-lang</groupId> <artifactId>scala-library</artifactId> <version>2.11.8</version></dependency>引入上面依赖然后再次build project (跟项目版本保持一致)如果还是报错,重启IDEA,再次build pr

2020-05-10 23:05:06 2520

原创 无法导入net.sf.json.JSONObject解决方案

首先在maven中添加net.sf.json-libjson-lib2.4jdk15这里推荐一个网站(可以搜需要导入的类的gav坐标)https://mvnrepository.com/maven下载好后 IDEA中右上角点file然后进入project Structure此时就不会出现之前找不到的那种情况了...

2020-05-10 14:24:27 3656

原创 DEA如何导入其他模块中的类(同一级)

直接导入时报错。其中commerce_basic是父类模块 commons以及session等都是子类模块在session中需要使用commons中的类,我直接import的话是没办法直接完成的解决方案:点击左上角的file打开project structure此时就可以引用别的模块中的类了...

2020-05-10 13:31:37 260

原创 IDEA中创建Spark SQL 客户端 实例化时报错解决方案

本来是做一个项目的模拟数据生成数据没有生成的时候:(执行的时候报错)in thread “main” java.lang.IllegalArgumentException: Error while instantiating ‘org.apache.spark.sql.hive.HiveSessionState’:大概意思就是不能实例化org.apache.spark.sql.hive.HiveSessionState但是生成了源数据库默认使用的spark自带的hive,按理说应该生成meta

2020-05-09 17:25:10 694

原创 VMware Workstation Pro 无法在Windows 上运行(一种简单的方式解决)

然后重启电脑在打开就行了

2020-05-03 21:19:36 413

原创 安装CentOS详细步骤

首先 检查BIOS虚拟化支持还有一种方式查看是否虚拟化支持,就是进入任务管理器 不用进入bios设置但是如果没有启用就需要进入BIOS设置进行修改了,有点麻烦哦。如果没有支持虚拟化技术就会显示如下图,但是一般都是默认可以的,如果真的不行大不了就进入BIOS重新设置成支持就行了。1新建虚拟机2新建虚拟机向导3创建虚拟空白光盘4安装Linux系统对应的CentOS版5虚拟...

2020-05-03 21:08:25 703

原创 10.0 C3P0连接池

C3P0 是一个开源组织提供的一个数据库连接池,速度相对较慢,稳定性还可以。**获取连接**获取连接方式一//使用C3P0数据库连接池的方式,获取数据库的连接:不推荐public static Connection getConnection1() throws Exception{ //获取c3p0数据库连接池 ComboPooledDataSource cpds = new ...

2020-05-01 19:11:30 210

原创 9.0 DBCP连接池

DBCP也是一个开源的连接池,是Apache Common成员之一,在企业开发中也比较常见,tomcat内置的连接池。(我用的是阿里的德鲁伊连接池)**1.导入jar包**也可以不需要导包,直接创建maven工程。DBCP驱动需要导入两个jar包。其他C3P0和Druid驱动只需要一个jar包。**1.2 编写工具类**连接数据库表的工具类, 采用DBCP连接池的方式来完成,J...

2020-05-01 19:01:54 204

原创 8.0 DAO及相关实现

DAO:Data Access Object访问数据信息的类和接口,包括了对数据的CRUD(Create、Retrival、Update、 Delete),而不包含任何业务相关的信息。有时也称作:BaseDAO作用:为了实现功能的模块化,更有利于代码的维护和升级。**1. BaseDAO的实现**本质:就是对增删改查的通用操作的封装,然后外不可以直接调用。但是对具体的表要提供具体的DAO...

2020-05-01 16:58:06 225

原创 7.0 SQL批量插入

**批量执行SQL语句**import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.SQLException;import org.junit.Test;import com.alibaba.util.JDBCUtils;/* * 使用PreparedStatement实现批量...

2020-05-01 16:22:30 304

原创 6.0 操作BLOB类型字段

**1.MySQL BLOB类型**(1)MySQL中,BLOB是一个二进制大型对象,是一个可以存储大量数据的容器,它能容纳不同大小的数据。(2)插入BLOB类型的数据必须使用PreparedStatement,因为BLOB类型的数据无法使用字符串拼接写的。(3)MySQL的四种BLOB类型(除了在存储的最大信息量上不同外,他们是等同的)**2.向数据表中插入大数据类型**i...

2020-05-01 16:16:40 254

原创 5.0 JDBC工具类与Properties配置文件

**5.1 未优化的工具类**因为每次操作都要重复的进行连接和关闭数据库的重复任务,为了避免,使用工具类。“获得数据库连接”操作,将在以后的增删改查所有功能中都存在,可以封装工具类JDBCUtils。提供获取连接对象的方法,从而达到代码的重复利用。该工具类提供方法:public static Connection getConn ()。代码如下:/* * JDBC工具类 */pu...

2020-05-01 15:25:02 294

原创 4.0 如何解决SQL注入问题

**创建一个用户类,然后模拟用户输入账号密码然后登陆这一操作。**public class User { private String user; private String password; public User() { } public User(String user, String password) { super(); this.user = use...

2020-05-01 15:06:27 366

原创 3.0 PreparedStatement

当使用statement , 假设有登录案例SQL语句如下:SELECT * FROM 用户表 WHERE NAME = 用户输入的用户名 AND PASSWORD = 用户输的密码;此时,当用户输入正确的账号与密码后,查询到了信息则让用户登录。但是当用户输入的账号为XXX 密码为:XXX’ OR ‘a’=’a时,则真正执行的代码变为:SELECT * FROM 用户表 WHERE NA...

2020-05-01 14:53:14 234

mysql-5.5.15.zip

mysql5.5安装版,免费版,学习者学习使用。MySQL规模小、功能有限,但是其体积小、速度快、成本低,并且MySQL提供的功能已经绰绰有余,这些特性使得MySQL成为世界上最受欢迎的开放源代码数据库。

2020-04-30

DBeaver.zip

强烈推荐的一个非常好用的第三方客户端,不收费,开源的,安装即用。几乎所有数据库都支持,也支持Hive。

2020-04-30

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除