摘要: 1. 引言 在做OLAP数据分析时,常常会遇到过滤分析需求,比如:除去只有性别、常驻地标签的用户,计算广告媒体上的覆盖UV。OLAP解决方案Kylin不支持复杂数据类型(array、struct、map),要求 "数据输入Schema必须是平铺" 的,但是平铺后丢失了用户的聚合标签信息,而没有办法判 阅读全文
posted @ 2016-10-09 20:40 Treant 阅读(5221) 评论(0) 推荐(0) 编辑
摘要: 看了《 "从数据角度解析福州美食" 》后难免心痒,动了要分析合肥餐饮业的念头,因此特地写了 "Node.js爬虫" 爬取了合肥的大众点评数据。分析数据库我并没有采用MySQL而是用的MongoDB,是因为爬取的数据存在字段缺失的情况(schema不一致)。 1. 数据准备 MongoDB简介 不同于 阅读全文
posted @ 2016-09-23 19:09 Treant 阅读(1570) 评论(3) 推荐(3) 编辑
摘要: 大众点评上有很多美食餐馆的信息,正好可以拿来练练手Node.js。 1. API分析 大众点评开放了查询商家信息的API, "这里" 给出了城市与cityid之间的对应关系,链接 以GET方式给出了餐馆的信息(JSON格式)。首先解释下GET参数的含义: start为步进数,表示分步获取信息的ind 阅读全文
posted @ 2016-09-22 10:15 Treant 阅读(3703) 评论(8) 推荐(4) 编辑
摘要: Bloom Filter一般用于数据的去重计算,近似于HashSet的功能;但是不同于Bitmap(用于精确计算),其为一种估算的数据结构,存在误判(false positive)的情况。 1. 基本原理 Bloom Filter能高效地表征数据集合$S = \lbrace x_1 ,x_2 ,.. 阅读全文
posted @ 2016-09-18 16:13 Treant 阅读(1828) 评论(2) 推荐(0) 编辑
摘要: 1. 引言 电商类的网站(比如:京东)为了便于用户浏览商品,建立了一套类目体系,对商品进行各种粗细粒度的划分。类似地,用户画像的标签体系也划分多层级的结构。在做标签洞察时,需要将这种带有层级的体系序列化json,提供给前端。但是,标签体系是存储在MySQL数据库中,为平铺化的表结构,如何将其表达为具 阅读全文
posted @ 2016-08-30 20:15 Treant 阅读(1708) 评论(0) 推荐(0) 编辑
摘要: 1. 引言 从安卓手机收集上来的机型大都为这样: mi|5 mi|4c mi 4c 2014022 kiw al10 nem tl00h 收集的机型大都杂乱无章,不便于做统计分析。因此,标注显得尤为重要。 "中关村在线" 有对国内大部分手机的介绍情况,包括手机机型 及其对应的常见名称 。因而,设计机 阅读全文
posted @ 2016-08-09 17:45 Treant 阅读(3624) 评论(0) 推荐(0) 编辑
摘要: 1. 常见命令 连接本地数据库与远程数据库(172.16.xx.xx:3306): 2. DDL 数据定义语言(Data Definition Lanuage, DDL)定义了数据库模式,包括CREATE、ALTER、DROP、TRUNCATE、COMMENT与RENAME语句。 创建(CREATE 阅读全文
posted @ 2016-07-26 09:44 Treant 阅读(1547) 评论(1) 推荐(2) 编辑
摘要: 1. 引言 "前一篇" 介绍了Pandas实现简单的SQL操作,本篇中将主要介绍一些相对复杂一点的操作。为了方便后面实操,先给出一份简化版的设备统计数据: 其中,第一列表示维度组合编号,第二列表示操作系统类型,第三列为维度值(NLL表示缺失,即第一行、第二行表示操作系统的统计,其余表示厂商或机型), 阅读全文
posted @ 2016-07-19 20:10 Treant 阅读(7379) 评论(0) 推荐(0) 编辑
摘要: 对于给定的大量APP,如何爬取与之对应的(应用市场)分类、描述的信息?且看下面分解。 1. 页面分析 当我们在豌豆荚首页搜索框输入 后,会跳转到搜索结果的页面,其url为 。搜索结果一般是按相关性排序的;所以,我们认为第一条搜索结果为所需要爬取的。紧接着,点进去后会跳转到页面 ,我们会发现豌豆荚的A 阅读全文
posted @ 2016-06-24 17:14 Treant 阅读(3970) 评论(1) 推荐(4) 编辑
摘要: 1. 简介 coordinator是workflow的定时提交器,基于时间条件与数据生成触发(based on time and data triggers)。简单点说,coordinator按所定义的时间周期进行轮询,若数据生成条件满足,则触发workflow任务;否则,则等待数据生成或跳过(调度 阅读全文
posted @ 2016-06-13 17:23 Treant 阅读(7148) 评论(0) 推荐(5) 编辑
摘要: 1. Oozie简介 Yahoo开发工作流引擎 "Oozie" (驭象者),用于管理Hadoop任务(支持MapReduce、Spark、Pig、Hive),把这些任务以DAG(有向无环图)方式串接起来。Oozie任务流包括:coordinator、workflow;workflow描述任务执行顺序 阅读全文
posted @ 2016-05-26 16:20 Treant 阅读(13762) 评论(2) 推荐(3) 编辑
摘要: 最近在用Hive做多维数据分析,总结一些常用HiveQL命令。 1. 建表 以纯文本数据建表: sql create table ( string comment 'ADX ID' , string comment 'ADX名称' , string comment '更新时间(天粒度)' ) com 阅读全文
posted @ 2016-05-20 18:43 Treant 阅读(1973) 评论(0) 推荐(0) 编辑
摘要: 1. 引言 在 "前一篇" 中,解决了Hive表中复杂数据结构平铺化以导入Kylin的问题,但是平铺之后计算广告日志的曝光PV是翻倍的,因为一个用户对应于多个标签。所以,为了计算曝光PV,我们得另外创建视图。 分析需求: 每个DSP上的曝光PV,标签覆盖的曝光PV; 累计曝光PV,累计标签覆盖曝光P 阅读全文
posted @ 2016-05-05 18:03 Treant 阅读(6128) 评论(0) 推荐(0) 编辑
摘要: 1. 引言 在分析广告日志时,会有这样的多维分析需求: 曝光、点击用户分别有多少? 标签能覆盖多少广告用户? 各个标签(标注)类别能覆盖的曝光、点击在各个DSP上所覆盖的用户数 …… 广告数据与标签数据join之后,存储orc file的schema如下: 用户可能会有多个标签,因此采用 数据类型来 阅读全文
posted @ 2016-04-28 17:26 Treant 阅读(5683) 评论(0) 推荐(1) 编辑
摘要: 在cube build完成后,我的工作是写sql生成数据分析邮件报表。但是,问题是这种重复劳动效率低、易出错、浪费时间。还好Kylin提供 "RESTful API" ,可以将这种数据分析需求转换成HTTP请求。 1. RESTful API Kylin的认证是basic authenticatio 阅读全文
posted @ 2016-04-22 10:29 Treant 阅读(3318) 评论(5) 推荐(0) 编辑
摘要: 前一段时间,用Django搭建一个报表分析的网站;借此正好整理一下笔记。 1. 安装 python有包管理工具pip,直接 ,输入 安装完成后, ,若能打印出Django的版本信息,即说明安装成功。一般地,Django安装在 目录。 2. Django介绍 项目 Django的架构是MTV(Mode 阅读全文
posted @ 2016-04-20 19:32 Treant 阅读(2010) 评论(0) 推荐(0) 编辑
摘要: 有一个数据多维分析的任务: 日志的周UV; APP的收集量及标注量,TOP 20 APP(周UV),TOP 20 APP标注分类(周UV); 手机机型的收集量及标注量,TOP 20 机型(周UV),TOP 20 手机厂商(周UV); 初始的解决方案:Spark读取数据日志,然后根据分析需求逐一进行m 阅读全文
posted @ 2016-04-12 12:57 Treant 阅读(3314) 评论(0) 推荐(1) 编辑
摘要: 在 "前一篇" 中介绍了使用API做Distinct Count,但是精确计算的API都较慢,那有没有能更快的优化解决方案呢? 1. Bitmap介绍 《编程珠玑》上是这样介绍bitmap的: Bitmap是一个十分有用的数据结构。所谓的Bitmap就是用一个bit位来标记某个元素对应的Value, 阅读全文
posted @ 2016-04-06 15:06 Treant 阅读(2537) 评论(0) 推荐(1) 编辑
摘要: 在数据库中,常常会有Distinct Count的操作,比如,查看每一选修课程的人数: Hive 在大数据场景下,报表很重要一项是UV(Unique Visitor)统计,即某时间段内用户人数。例如,查看一周内app的用户分布情况,Hive中写HiveQL实现: Pig 与之类似,Pig的写法: " 阅读全文
posted @ 2016-03-29 13:51 Treant 阅读(7438) 评论(0) 推荐(1) 编辑
摘要: 1. 数据模型 Schema Pig Latin表达式操作的是relation,FILTER、FOREACH、GROUP、SPLIT等关系操作符所操作的relation就是bag,bag为tuple的集合,tuple为有序的field列表集合,而field表示数据块(A field is a pie 阅读全文
posted @ 2016-01-20 14:20 Treant 阅读(1982) 评论(0) 推荐(1) 编辑