- 博客(114)
- 收藏
- 关注
原创 快速排序个人见解
快排的原理就是设定一个基准,把比它小的数放在左边,比它大的数放在右边。完成第一次排序这样同时也就分成了左右两个区间,再递归的对区间内的元素进行排序,这样就可以对整个数组进行排序了。分成三部分:quicksortsubsortswapquicksortpublic static void quicksort(int[] data){ if(data.length != null){ subsort(data,0,data.length -1 ); } }s
2021-07-06 23:02:33 257
原创 离线日志分析系统整合
https://blog.csdn.net/KujyouRuri/article/details/116589945https://blog.csdn.net/KujyouRuri/article/details/116613332https://blog.csdn.net/KujyouRuri/article/details/116668664
2021-06-29 22:32:35 382
原创 Spark交互式系统项目整合
https://blog.csdn.net/KujyouRuri/article/details/117947510https://blog.csdn.net/KujyouRuri/article/details/117953828https://blog.csdn.net/KujyouRuri/article/details/117954533https://blog.csdn.net/KujyouRuri/article/details/117965760
2021-06-29 22:30:13 247
原创 数仓项目集合
主要是整合一下链接:https://blog.csdn.net/KujyouRuri/article/details/115147175https://blog.csdn.net/KujyouRuri/article/details/116334866https://blog.csdn.net/KujyouRuri/article/details/116359660https://blog.csdn.net/KujyouRuri/article/details/116402383https://b
2021-06-29 22:06:30 183
原创 k均值聚类代码的实现
k means教程引入依赖import numpy as npimport matplotlib.pyplot as plt# 从sklearn中直接生成聚类数据from sklearn.datasets.samples_generator import make_blobs数据加载x, y = make_blobs( n_samples=100, centers=6, random_state=1234, cluster_std=0.6 )plt.figure(fi
2021-06-25 22:34:51 680 1
原创 推荐系统——LFM梯度下降算法
这里写目录标题CF协同过滤的基本思想隐语义模型(LFM)基础LFM降维方法——矩阵因子分解LFM的进一步理解矩阵因子分解模型求解——损失函数模型的求解算法——ALSALS算法梯度下降算法的推导核心算法CF协同过滤的基本思想隐语义模型(LFM)基础LFM降维方法——矩阵因子分解LFM的进一步理解矩阵因子分解模型求解——损失函数模型的求解算法——ALSALS算法梯度下降算法的推导核心算法def LFM_grad_desc( R, K=2, max_iter=
2021-06-25 21:53:33 428 1
原创 TF-IDF算法的代码实现
引入依赖import numpy as npimport pandas as pd定义数据和预处理docA = "The cat sat on my bed"docB = "The dog sat on my knees"bowA = docA.split(" ")bowB = docB.split(" ")bowA# 构建词库wordSet = set(bowA).union(set(bowB))wordSetOut[3]:{'The', 'bed', '.
2021-06-25 21:12:21 608 1
原创 K临近算法(KNN)的实现
KNN的代码实现0.引入依赖import numpy as npimport pandas as pd# 这里直接引入sklearn里的数据集,iris鸢尾花from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split # 切分数据集为训练集和测试集from sklearn.metrics import accuracy_score # 计算分类预测的准确率数
2021-06-22 10:20:04 158
原创 机器学习——线性回归的代码实现
这里写目录标题利用最小二乘法实现代码利用梯度下降法实现代码利用sklearn库来实现利用最小二乘法实现代码0.引入依赖import numpy as npimport matplotlib.pyplot as plt1.导入数据points=np.genfromtxt('data.csv',delimiter=',')points[0,0]# 提取出ponits中的第一列数据和第二列数据,分别作x,yx=point[;,0] ## 第一列y=point[;,1] ##第二
2021-06-21 13:17:16 466
转载 PYTHON基础语法
编码默认情况下,python3源文件以UTF-8编码,所有字符串都是unicode字符串。同时可以指定源文件的不同编码文件开头加上 # -*- coding: UTF-8 -*- # coding=utf-8(等号两边不能有空格)允许在源文件中使用utf-8字符集中的字符编码,对应的适合语言为中文等。标识符第一个字符必须是字母表中的字母或下划线_标识符中的其他部分由字母、数字和下划线组成标识符对大小写敏感在python3中,非ASCII标识符 (如中文字符) 也是允许的注释单行注释
2021-06-21 00:31:20 197
原创 推荐系统与机器学习基础(3)
监督学习——回归模型线性回归是一种线性模型,它假设输入变量x和单个输出变量y之间存在线性关系。具体来说,利用线性回归模型,可以从一组输入变量x的线性组合中,计算出变量y: y=ax+b通常利用最小二乘法来求得线性回归方程的系数,一般求得结果如下:多元线性回归:如果有两个或两个以上的自变量,这样的线性回归分析称为多元线性回归实际问题中,一个现象受多个因素影响,所以多元线性回归比一元线性回归的实际应用更广。梯度下降法:梯度下降求解线性回归:α在梯度下降算法中被称为学习率或者步长,这意味着我们
2021-06-20 20:41:33 408 10
原创 推荐系统与机器学习基础(2)
机器学习的定义机器学习主要研究计算机系统对于特定任务的性能,逐步进行改善的算法和统计模型。通过输入海量训练数据对模型进行训练,使模型掌握数据所蕴含的潜在规律,进而对新输入的数据进行准确的分类或预测。是一门多领域交叉学科,设计概率论、统计续页、逼近论等多门学科。专门研究计算机怎么样模拟或实现人类的学习行为,以获取新的知识或技能。机器学习分类有监督学习:提供数据并提供数据对应结果的机器学习过程无监督学习:提供数据并且不提供数据对应结果的机器学习过程强化学习:通过与环境交互并获取延迟返回进而改进行为的
2021-06-20 19:01:08 175 1
原创 推荐系统与机器学习基础(1)
推荐系统概述推荐系统是信息过载所采用的措施,面对海量的数据信息,从中快速推荐出符合用户特点的物品。解决一些人的“选择恐惧症”;面向没有明确需求的人。推荐系统的目的• 让用户更快更好的获取到自己需要的内容• 让内容更快更好的推送到喜欢它的用户手中• 让网站(平台)更有效的保留用户资源推荐系统的基本思想– 利用用户和物品的特征信息,给用户推荐那些具有用户喜欢的特征的物品。– 利用用户喜欢过的物品,给用户推荐与他喜欢过的物品相似的物品。– 利用和用户相似的其他用户,给用户推荐那些和他们兴趣爱好
2021-06-20 16:44:23 240 1
原创 meituan交互浅析(4) AD广告模块与黑名单机制
DAO层的基础建设:创建 AdBlacklist类,用于package com.aura.bigdata.analysis.domain.ad;public class AdBlacklist { private int user_id; public int getUser_id() { return user_id; } public void setUser_id(int user_id) { this.user_id =
2021-06-16 23:37:13 269
原创 LeetCode刷题——java——day10
232.用栈实现队列题目描述:请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):实现 MyQueue 类:void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并返回元素int peek() 返回队列开头的元素boolean empty() 如果队列为空,返回 true ;否则,返回 false说明:你只能使用标准的栈操作 —— 也就是只有 push to top, peek/pop f
2021-06-16 23:25:55 162
原创 meituan交互式系统浅析(3) sparkSQL数据倾斜解决
对于在开发过程中可能出现的数据倾斜问题,可提供一种利用双重group by的方法来解决。分析: 可以使用类似于SparkCore中解决数据倾斜,提高的两阶段聚合(局部+全局) 局部——随机打散+前缀,通过groupBy完成局部统计 全局——去掉前缀,通过groupBy完成全局统计object _05SparkSQLOptimizationOps { def main(args: Array[String]): Unit = { Logger.getLogger("org
2021-06-16 12:58:26 152
原创 meituan交互式系统浅析(2) product,统计区域热门商品
DAO层的基础建设:ProductAreaTop3DaoImpl 用于插入或者更新区域热门商品的数据package com.aura.bigdata.analysis.dao.impl.product;import com.aura.bigdata.analysis.dao.product.IProductAreaTop3Dao;import com.aura.bigdata.analysis.domain.product.ProductAreaTop3;import com.aura.bigd
2021-06-16 12:25:57 148
原创 meituan交互式系统项目浅析(1) session 模块
项目简介: 本项目主要用于互联网电商企业中,使用Spark技术开发的大数据统计分析平台,对电商网站的各种用户行为(访问行 为、购物行为、广告点击行为等)进行复杂的分析。用统计分析出来的数据,辅助公司中的PM(产品经理)、数据分析师以及管理人员分析现有产品的情况,并根据用户行为分析结果持续改进产品的设计,以及调整公司的战略和业务。最终达到用大数据技术来帮助提升公司的业绩、营业额以及市场占有率的目标。 项目主要采用目前大数据领域较为流行的Spark技术堆栈。采用了Spark技术生态栈中最常用的
2021-06-16 11:18:43 298
原创 leetcode刷题——java——day09
704.二分查找教科书上的算法,直接上代码。class Solution { public int search(int[] nums, int target) { int left = 0; int right = nums.length - 1 ; while(left <= right){ int priot = left+(right-left)/2 ; if(nums[priot]==target){ return
2021-06-04 11:31:36 157 1
原创 leetcode刷题——java——day08
移除简单元素:给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。你可以想象内部操作如下:// nums 是以“引用”方式传递的。也
2021-05-17 19:40:37 124
原创 LeetCode刷题——java——day07
返回⾮重复数字的个数,并且把 nums ⾥重复的数字也去掉。例如,nums = [ 1, 1, 2 ] ,那么就返回 2 ,并且把 nums 变成 [ 1, 2 ]。解法一 双指针public int remove (Array num){int i = 0 ;int len =1 ; for(int j =1 ; j<num.length() -1 ; j++){ if ( num[i] == num[j] ){ i++ ;
2021-05-12 13:30:01 182
原创 离线日志分析平台day03
hive与hbase的整合在hive中如果关联hbase中已经存在的表,要使用外部表,反之使用内部关联的话,会在hbase中创建对应的新表:实例:CREATE EXTERNAL TABLE hhh1 (id int, name string,age int) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,f:na
2021-05-11 20:39:24 125
原创 离线日志分析平台day02
利用sqoop将用户的数据信息从Mysql导入到hdfs当中#!/bin/sh################### collect mysql data import into hdfs ## 约定:变量都用大写,多个单词之间使用下划线分割## mysql: test/t_user ## hdfs : /input/data-clean/t_user###############SQOOP_BIN=/home/bigdata/app/sqoop/bin/sqoopSTA
2021-05-11 17:49:09 234
原创 离线日志分析平台day01
需求解析:分析数据、清洗数据时候。首先弄清楚数据的来源。数据的所有来源是程序。比如:提供web服务的web程序、后台统计的程序等。www.baidu.com等门户网站提供web服务,网站后台周期性的统计用户或者商品的行为的为后台程序。数据的形态两种:日志文件、数据流[比如mysql里面的数据]。日志文件可以直接读取,而mysql的文件要通过提供的接口来读取。对比:由于数据流的接口要求比较高。比如有些语言不支持写入mysql。所以日志文件是主要形态。数据流是在条件允许的情况下用于实时分析统计。
2021-05-10 12:36:46 357
原创 写个数仓吧(17) presto可视化
OLAP分析工具之PrestoPresto Server安装1)下载地址https://repo1.maven.org/maven2/com/facebook/presto/presto-server/0.196/presto-server-0.196.tar.gz2)将presto-server-0.196.tar.gz导入hadoop102的/opt/software目录下,并解压到/opt/module目录[atguigu@hadoop102 software]$ tar -zxvf pre
2021-05-08 23:14:19 605
原创 写个数仓吧(16) 拉链表
用overwrite来代替update成10条原始订单数据CALL init_data(‘2019-02-13’,10,5,10,TRUE);[atguigu@hadoop102 bin]$ sqoop_import.sh all 2019-02-13[atguigu@hadoop102 bin]$ ods_db.sh 2019-02-13[atguigu@hadoop102 bin]$ dwd_db.sh 2019-02-132)建立拉链表hive (gmall)>d...
2021-05-08 23:05:44 163
原创 写个数仓吧(15)品牌复购率——ADS层
建表语句hive (gmall)>drop table ads_sale_tm_category1_stat_mn;create table ads_sale_tm_category1_stat_mn( tm_id string comment '品牌id ' , category1_id string comment '1级品类id ', category1_name string comment '1级品类名称 ', buycount bigi
2021-05-08 22:37:56 336
原创 LeetCode刷题——java——day06
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。题解: class Solution{public ListNode meregeTwoLists(ListNode l1, ListNode l2){ if(l1==null){ return l2;} else if(l2==null){ return l1 ;} else if (l1.val < l2.val){ l1.next=meregeTw
2021-05-08 14:36:04 108
原创 写个数仓吧(14) ADS层的指标需求
GMV成交总额什么是GMV建表语句hive (gmall)>drop table if exists ads_gmv_sum_day;create table ads_gmv_sum_day( `dt` string COMMENT '统计日期', `gmv_count` bigint COMMENT '当日gmv订单个数', `gmv_amount` decimal(16,2) COMMENT '当日gmv订单总金额', `gmv_payment`
2021-05-08 00:55:29 297 1
原创 写个数仓吧(13)DWD层以及宽表
DWD层积压ODS层对数据进行判空过滤。对商品分类表进行维度退化(降维)。创建订单表hive (gmall)>drop table if exists dwd_order_info;create external table dwd_order_info ( `id` string COMMENT '', `total_amount` decimal(10,2) COMMENT '', `order_status` string COMMENT ' 1 2 3
2021-05-08 00:11:21 1251 2
转载 写个数仓吧(12) 业务数据仓库——ODS层
ODS层完全仿照业务数据库中的表字段,一模一样的创建ODS层对应表。创建订单表hive (gmall)>drop table if exists ods_order_info;create table ods_order_info ( `id` string COMMENT '订单编号', `total_amount` decimal(10,2) COMMENT '订单金额', `order_status` string COMMENT '订单状态',
2021-05-07 23:42:18 186
原创 写个数仓吧(12)生成模拟业务数据
业务数据的生成建表语句 CREATE TABLE `order_info` ( `id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '编号', `consignee` VARCHAR(100) DEFAULT NULL COMMENT '收货人', `consignee_tel` VARCHAR(20) DEFAULT NULL COMMENT '收件人电话', `total_amount` DECIMAL(10,2) DEFAULT NULL
2021-05-07 23:35:20 446
转载 写个数仓吧(11) 业务数据仓库的一些理论基础
业务数仓的一些理论表的分类实体表定义实体表,一般是指一个现实存在的业务对象,比如用户,商品,商家,销售员等等。用户表:维度表定义维度表,一般是指对应一些业务状态,代码的解释表。也可以称之为码表。比如地区表,订单状态,支付方式,审批状态,商品分类等等。订单状态表:事务型事实表定义事务型事实表,一般指随着业务发生不断产生的数据。特点是一旦发生不会再变化。一般比如,交易流水,操作日志,出库入库记录等等。周期型事实表定义周期型事实表,一般指随着业务发生不断产生的数据。与事务
2021-05-07 23:01:44 125
转载 写个数仓吧(10)—— 用户行为数据仓库,用户留存主题
需求描述DWS层DWS层DWS层(每日留存用户明细表)1)建表语句hive (gmall)>drop table if exists `dws_user_retention_day`;create table `dws_user_retention_day` ( `mid_id` string COMMENT '设备唯一标识', `user_id` string COMMENT '用户标识', `version_code` string COMMEN.
2021-05-07 00:25:17 223
原创 写个数仓吧(9)用户行为数据仓库——DWS层与ADS层,用户新增主题
需求二:用户新增主题首次联网使用应用的用户。如果一个用户首次打开某app,那这个用户定义为新增用户;卸载再安装的设备,不会被算作一次新增。新增用户包括日新增用户、周新增用户、月新增用户。DWS层建表语句hive (gmall)>drop table if exists `dws_new_mid_day`;create table `dws_new_mid_day`( `mid_id` string COMMENT '设备唯一标识', `user_id` strin
2021-05-06 23:55:12 240 1
原创 写个数仓吧(8) 用户行为数据仓库——ADS层,用户活跃主体
ADS层目标:当日、当周、当月活跃设备数就是吧DWS层的每日每周还有每月活跃join到一起建表语句hive (gmall)>drop table if exists ads_uv_count;create external table ads_uv_count( `dt` string COMMENT '统计日期', `day_count` bigint COMMENT '当日用户数量', `wk_count` bigint COMMENT '当周用户数量',
2021-05-06 23:34:59 148
原创 写个数仓吧(7) 用户行为数据仓—— DWS层,用户活跃主题
需求一:用户活跃主题分层:DWS层目标:统计当日、当周、当月活动的每个设备明细每日活跃:建表语句hive (gmall)>drop table if exists dws_uv_detail_day;create table dws_uv_detail_day( `mid_id` string COMMENT '设备唯一标识',`user_id` string COMMENT '用户标识', `version_code` string COMMENT '程序版本号', `
2021-05-06 23:23:37 226
转载 写个数仓吧(6) 基础电商知识和一些要用的系统函数
业务术语:1.用户用户以设备为判断标准,在移动统计中,每个独立设备认为是一个独立用户。Android系统根据IMEI号,IOS系统根据OpenUDID来标识一个独立用户,每部手机一个用户。2.新增用户首次联网使用应用的用户。如果一个用户首次打开某app,那这个用户定义为新增用户;卸载再安装的设备,不会被算作一次新增。新增用户包括日新增用户、周新增用户、月新增用户。3.活跃用户打开应用的用户即为活跃用户,不考虑用户的使用情况。每天一台设备打开多次会被计为一个活跃用户。4.周(月)活跃用户某个自
2021-05-06 22:50:33 248
原创 Leetcode刷题——java——day05
题目大意:括号匹配问题——左半边括号必须与右边匹配上才能为true,否则为false,且有顺序。import java.util.*;public class day05_括号匹配 { public boolean isValid(String s) { int n = s.length(); if (n % 2 == 1) { //必须是偶数个括号才能匹配 return false; }.
2021-05-04 22:25:33 133
原创 写个数仓吧(5) DWD层
DWD层数据解析对ODS层数据进行清洗(去除空值,脏数据,超过极限范围的数据,行式存储改为列存储,改压缩格式)。创建基础明细表明细表用于存储ODS层原始表转换过来的明细数据。对于公共字段:输入一个字段,输出一个字段,只需要用UDF即可对于事件详情:输入一个字段,要拆分成四个字段,需要UDTF。创建启动日志基础明细表hive (gmall)> drop table if exists dwd_base_start_log;CREATE EXTERNAL TABLE `dwd_base
2021-05-04 17:47:44 208
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人