自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 收藏
  • 关注

原创 数仓建模综述

一、为什么需要建模性能:良好的数据模型能帮助我们快速查询所需要的数据,减少数据I/O的吞吐。 成本:良好的数据模型能极大地减少不必要的数据冗余,也能实现计算结果 复用,极大地降低大数据系统中的存储和计算成本。 效率:良好的数据模型能极大的改善用户使用数据的体验,提高使用数据的效率。 质量:良好的数据模型能改善数据统计口径的不一致性,减少数据计算错误的可能性。二、关系数据库和数据仓库 随着大型关系数据库商业软件的兴起,现代企业信息系统几乎都在使用关系数据库来存储、加工和处理数据。数...

2021-02-07 11:57:09 207

原创 浅谈离线用户画像开发

用户画像一般包含三种画像:基础画像(base_info_da)、行为画像(action_info_da)、偏好画像(prefer_info_da)。基础画像:用户的年龄、性别、婚姻状态,还有挖掘类标签也可融入其中,如用户生命周期、留存率、流失率等。 行为画像:比如用户近X天在Y维度下访问、关注商品的次数。(X可以是1、3、7、100天,Y可以是比如裤子类、羽绒服类、夹克类) 偏好画像:根据用户X的行为数据,进行时间衰减和不同行为的权重计算出偏好。(比如裤子类中,用户对休闲裤的偏好是0.6,牛仔裤的偏

2021-02-03 11:12:01 387

原创 full outer join替换union all解决out_map问题

背景:用户画像需要计算X天的数据,并且是用户维度去计算,所以需要对历史数据进行id关联。比如用户前天登陆A手机,昨天登陆B手机,今天在算的时候就要归到一个人。在计算的时候就需要将(-X)--(-1)天的数据进行id关联计算。由于数据量大,运行时间慢,故需优化。涉及的表:action_di:行为明细表,需要X个分区。每天6点产出。 id_relation_da:id关联表,每天4点产出。 browse_cnt_da:用户浏览结果表,需要X个action_di和id_relation_da进行id转

2020-11-11 18:24:24 656

原创 偏好配置化spark参数设置

背景:偏好种类过多,每次创建、完善画像hql工作量巨大。为了解决此问题,将hql配置化生成,并且使用spark运行。由于不同的偏好量不同,脚本动态分配资源,直接上代码!脚本:sh /....../prefer_res_normal.sh 参数1 参数2 21840 (21840约等于偏好M数,必须为840的倍数)#!/bin/bashpartitions=`expr ${3} / 140`numexe=`expr ${3} / 840`--master yarn \--driver

2020-10-23 21:03:23 506

原创 hive mapjoin正确写法,多张表mapjoin正确写法

mapjoin相关参数:https://blog.csdn.net/ccstargazing/article/details/106564262直接举例子:当有多张维度表去关联一张事实表,并且主表的某一关联键使用了不止一次。事实表:base,三个字段:key、city_code、biz_id维度表:position,六个字段:city_code、biz_id、city_name、city_short、biz_name、biz_short。常规写法:select t1.key a

2020-09-28 18:35:37 2768 2

翻译 ORC文件存储格式探究

一、ORC文件格式ORC的全称是(Optimized Record Columnar),使用ORC文件格式可以提高hive读、写和处理数据的能力。ORC在RCFile的基础上进行了一定的改进,所以与RCFile相比,具有以下一些优势:- 1、ORC中的特定的序列化与反序列化操作可以使ORC file writer根据数据类型进行写出。- 2、提供了多种RCFile中没有的index...

2020-08-11 12:03:37 909

原创 hive sql连接优化,hive参数设定,map连接

Map连接当大小表连接时,Map连接是一个非常有用的特性。小表保存在每个节点的本地缓存,在Map阶段与大表进行连接。两个优势:小表装进缓存将节省每个数据节点上的读取时间;避免了hive查询中的倾斜连接,因为每个数据块的连接操作在map阶段完成了。hive.auto.convert.join=true:是否启用基于输入文件的大小,将普通连接转化为Map连接的优化机制。 hive.auto.covert.join.noconditionaltask=true:是否启用基于文件的大小,将普通连接转化为

2020-06-08 10:06:04 721

原创 数据仓库建模,维度模型关系模型对比

数据仓库定义数据仓库是一个面向主题的(SubjectOriented)、集成的(Integrate)、不可更新的(Non-Volatile)、随时间变化的(TimeVarian)数据集合,用户支持管理决策。面向主题:所有数据都围绕某一主题组织。 数据集成:数据来源于多个数据源的集成。 随时间变化:定期接收新的集成数据。 不可更新:保存的数据是一些列的快照。不允许被修改。建设数据仓库的原因将多个数据源集成到单一数据存储,因此可以使用单一数据查询引擎展示数据。 维护历史数据。 通过提供一

2020-06-04 10:16:39 1161 1

原创 维度数据模型,星型模型、雪花模型

总述:维度模型是一种趋向于支持最终用户对数据仓库进行查询的设计技术,是围绕性能和易理解构建的。尽管关系模型对于事务处理系统表现非常出色,但它并不是面向最终用户的。事实和维度是两个维度模型中的核心概念。事实表示对业务数据的度量,而维度是观察数据的角度。事实通常是数字类型的,可以进行聚合和计算,而维度通常是一组层次关系或描述信息。维度模型按照业务流程领域即可,例如进货、销售、库存、进货等。不同主题域可能共享某些维度,为了提高数据操作的性能和数据一致性,需要使用一致性维度。1、维度数据模型建模过程

2020-06-02 10:26:08 1960

原创 hive union底层原理,union与union all再group by的性能对比

union:将多个结果集合并为一个结果集,结果集去重。union all:将多个结果集合并为一个结果集,结果集不去重。本次测试将四份数据去重合并,其中一份数据使用了grouping sets,所以这份数据是单独进行了一次reduce。两种写法:一种是采用union的方法,另一种是采用union all再进行group by的方法(将不去重的结果集利用group by去重)。接下来直...

2020-04-07 11:37:43 4348 3

原创 hive性能优化,一篇就够了!!!

一 Sql转换mr过程二 基本sql原则三 map四 join五 reduce一 Sql转换mr过程这里借用一下美团技术文章:https://tech.meituan.com/2014/02/12/hive-sql-to-mapreduce.html二 基本sql原则•1:尽量早的过滤数据(谓词下推hive.optimize.ppd、避免空值),同时列...

2020-03-29 13:33:00 1125

原创 数据仓库与数据湖

一、数据仓库与数据湖的区别一是存储数据类型不同。数据仓库中存储的主要是结构化数据,对于加载到数据仓库中的数据,首先需要定义数据存储模型。而数据湖以其原生格式保存大量原始数据,包括结构化的、半结构化的和非结构化的数据,并且在使用数据之前,不对数据结构进行定义。二是数据处理模式不同。数据仓库是高度结构化的架构,数据在清洗转换之后才会加载到数据仓库,用户获得的是处理后数据。而在数据湖中,数据直接...

2020-02-26 18:51:42 4099

原创 剑指offer23,从上往下打印二叉树(Java实现)

 import java.util.ArrayList;import java.util.LinkedList;import java.util.Queue;/** * 从上到下打印二叉树 * 描述:从上往下打印二叉树的每个结点,从一层的结点按照从左到右的顺序打印。 * 方法:采用队列的方法(队列先进先出的性质)。首相将root放入队列,弹出一个时,同时将其左右孩子放入队列末端(...

2018-07-25 11:51:33 153

原创 剑指offer22,栈的压入、弹出序列(Java实现)

 import java.util.Stack;/** * 栈的压入、弹出序列 * 描述:输入两个序列,表示输入和弹出顺序,判断第二个是否是该栈第一个的弹出顺序    方法:需要一个辅助栈 * @author lenovo047 * */public class test22 {        public boolean IsPopOrder(int [] pushA...

2018-07-25 11:46:03 126

原创 剑指offer21,包含min函数的栈(Java实现)

import java.util.Stack;/** * 具有getmin功能的栈 * @author lenovo047 * */public class test21 {    private static Stack<Integer> stackData = new Stack<>();    private static Stack<Inte...

2018-07-25 11:43:59 228

原创 剑指offer20,顺时针打印矩阵(Java实现)

 import java.util.ArrayList;/** * 顺时针打印矩阵 * 描述:输入一个矩阵,按照从外向里顺指针的顺序打印数字 * @author lenovo047 * */public class test20 {        public static void main(String[] args) {        int[][] a = { ...

2018-07-24 10:40:39 117

原创 剑指offer19,二叉树的镜像(Java实现)

package swordOffer;public class test19 {        public void Mirror(TreeNode root) {        //root为空  或者     左右结点同时为空,结束        if(root == null || (root.left == null && root.right == null...

2018-07-24 10:33:16 422

原创 剑指offer18,树的子结构(Java实现)

package swordOffer;/** * 树的子结构 * 描述:输入两科二叉树A和B,判断B是不是A的子结构 * @author lenovo047 * */public class test18 {        public boolean HasSubtree(TreeNode root1,TreeNode root2) {        boolean fla...

2018-07-24 10:31:55 303

原创 剑指offer17,合并两个排序的链表(Java实现)

如果有不对的地方请发邮件到995232184@qq.com。若是不太明白思路或者过程也可发邮件给我,谢谢支持!此题给出两种方法,可以自行比较一下,看不懂的时候可以画图帮助理解。/** * 题目:合并两个排序的链表 * @author lenovo047 * */public class test17 {        public static void main(String...

2018-07-23 11:21:34 511

原创 剑指offer16,反转链表(Java实现)

如果有不对的地方请发邮件到995232184@qq.com。若是不太明白思路或者过程也可发邮件给我,谢谢支持。/** * 题目:反转单向链表 * 描述:定义一个函数,输入一个链表的头结点,反转该链表并输出 反转后的头结点    具体思路看注释!!! * @author lenovo047 * */public class test16 {    public static L...

2018-07-23 10:38:19 189

原创 剑指offer15,链表中倒数第K个节点(Java实现)

如果有不对的地方请发邮件到995232184@qq.com。若是不太明白思路或者过程也可发邮件给我,谢谢支持。 import linkList.Node;/** * 题目:链表中倒数第K个节点 * 描述:输入一个链表,输出链表中倒数第K个结点。 * 解题:定义两个指针p1,p2。p1从头开始向前走k-1步,第二个指针保持不动; * 从第k步开始,两个指针开始遍历,当p1走到最后...

2018-07-23 10:25:28 151

原创 剑指offer14,调整数组顺序使奇数位于偶数前面(Java实现)

如果有不对的地方请发邮件到995232184@qq.com。若是不太明白思路或者过程也可发邮件给我,谢谢支持。剑指offer只是要求,奇数在前半部分,偶数在后半部分,我写完去牛客调试的时候发现,要求保证奇数和奇数,偶数和偶数之间的相对位置不变。所以我又加了一段代码。 import java.util.Arrays;/** * 题目:调整数组顺序使奇数位于偶数前面  * 描述:输...

2018-07-23 10:00:05 978

原创 剑指offer13,在O(1)时间删除链表结点(Java实现)

如果有不对的地方请发邮件到995232184@qq.com。若是不太明白思路或者过程也可发邮件给我,谢谢支持。package swordOffer;/** * 题目:在O(1)时间内删除链表结点 * 在O(1)时间内删除链表结点,肯定不是遍历链表,那怎么做呢? * 将下一个节点的值复制到该结点,删除下一个节点就行了! * 大致思路就是这样,这只是正常情况下!特殊情况我们直接看代码中...

2018-07-23 09:23:17 193

原创 剑指offer12,打印1到最大的n位数(Java实现)

如果有不对的地方请发邮件到995232184@qq.com。若是不太明白思路或者过程也可发邮件给我,谢谢支持。/** * 题目:打印1到最大的n位数 * 描述:输入数字n按顺序打印出1的最大的n位十进制数。 * 此题肯定不能用传统的方法,因为当n很大的时候,long long 都会溢出 * 所以我们采用字符串,递归递归递归 * @author lenovo047 * */pub...

2018-07-22 09:51:33 227

原创 剑指offer11,数值的整数次方(Java实现)

如果有不对的地方请发邮件到995232184@qq.com。若是不太明白思路或者过程也可发邮件给我,谢谢支持。 /** * 题目:数值的整数次方 * 描述:不得使用函数库中的函数 * 解题:此题要是利用时间复杂O(n)的解法,那一定很简单,要实现时间复杂度O(logn)是最好的  * 实现方法:采用递归的方法。比如2的32次方,我们可以用2的16次方相乘;2的33次方,可以是2的1...

2018-07-22 09:30:49 182

原创 剑指offer10,二进制中1的个数(Java实现)

如果有不对的地方请发邮件到995232184@qq.com。若是不太明白思路或者过程也可发邮件给我,谢谢支持。/** * 题目:二进制中1的个数 * 描述:请实现一个函数,输入一个整数,输出概述二进制中1的个数。 * 思路:把一个整数减去1,再和原整数做与运算,会把最右边的一个1变成0. * 那么一个整数的二进制中有多少个1,就进行多少次这样的操作  * 举个栗子:1100 &amp...

2018-07-21 10:36:05 173

原创 剑指offer09,斐波那契数列(Java实现)

根据剑指offer的要求,我对题目的难度进行了增加。描述:一只青蛙上楼梯,一次可以上1层,一次可以上2层,一次可以上3层,上N层有多少种跳法。思路:上一层有1种跳法,上两层有2种跳法,上三层有4种跳法{1,1,1}{1,2}{2,1}{3},接下来就是递归如果有不对的地方请发邮件到995232184@qq.com。若是不太明白思路或者过程也可发邮件给我,谢谢支持。public cla...

2018-07-21 10:14:15 122

原创 剑指offer08,旋转数组的最小数字(Java实现)

如果有不对的地方请发邮件到995232184@qq.com。若是不太明白思路或者过程也可发邮件给我。/** * 题目:旋转数组的最小数字 * 描述:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转 * 输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。举个栗子{3,4,5,1,2} * 注意:不能遍历数组找到最小元素,这样复杂度为O(n),而且没有用上递增的特性...

2018-07-21 09:36:53 105

原创 剑指offer07,用两个栈实现队列(Java实现)

如果有不对的地方请发邮件到995232184@qq.com。若是不太明白思路或者过程也可发邮件给我。import java.util.Stack;/** * 题目:用两个栈实现队列 * 描述:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deleteHead, * 分别完成在队尾部插入结点和在队列头删除结点的功能。 * 解答:栈的特点是先进后出,队列...

2018-07-20 16:05:40 316

原创 剑指offer06,重建二叉树(Java实现)

题目要求是根据前序遍历和中序遍历打印二叉树,在这里我也写了中序和后序建树 ,前序和后序建树,如果有不对的地方请发邮件到995232184@qq.com。若是不太明白思路或者过程也可发邮件给我,我建议大家画好树再看代码,比较直观。 /*     * 前序和中序建立二叉树     */    public TreeNode preInToTree(int[] pre, int[] in)...

2018-07-20 11:45:59 141

原创 剑指offer05,从尾到头打印链表(Java实现)

题目要求:输入一个链表的头结点,从尾到头反过来打印每个结点的值。此题可以有两种解法一、不改变链表的结构,从链表的头结点开始,逐个放入栈中(利用栈后进先出的特性),再逐个弹出即可private static void printListReverse1(Node head) {        if(head == null){            return;        }...

2018-07-20 09:28:15 132

原创 剑指offer04,替换空格(Java实现)

题目:实现一个函数,把字符串中的每个空格替换成“%20”思路:先初始化一个新的可变字符串,将老字符串逐个字符判断,若是空格,则转换成%20,加到新字符串,若不是空格,直接加到新的字符串。 private static StringBuffer replaceBlank(String str) {        StringBuffer sb = new StringBuffer();...

2018-07-19 17:35:45 115

空空如也

空空如也

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

TA关注的人

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