
大数据见微
文章平均质量分 73
见微方能知著。本专栏将深入探讨大数据的应用和发展,介绍相关技术和方法,通过案例分享和实践经验,帮助读者了解大数据的本质和应用,掌握数据分析和应用的核心技能,实现数据驱动的智慧洞察。
优惠券已抵扣
余额抵扣
还需支付
¥19.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
lifehack
玩过大数据,做过搜广推,搞过密码学,如今在大模型搬砖
展开
-
【Hadoop】数据序列化系统Avro
Avro简介schema文件组成声明代码测试代码序列化与反序列化specificgeneric参考文献Avro简介Avro是由Doug Cutting(Hadoop之父)创建的数据序列化系统,旨在解决Writeable类型的不足:缺乏语言的可移植性。为了支持跨语言,Avro的schema与语言的模式无关。有关Avro的更多特性请参看官方文档 1。Avro文件的读写是依据schema而原创 2015-08-31 08:47:00 · 3574 阅读 · 3 评论 -
【Hadoop】Avro源码分析(一):Schema
抽象类SchemaType类图原生类型Schema的创建保留字段类RecordSchemaName与Names类FieldRecordShema的定义toString的实现测试代码有关Avro的schema介绍已经在前一篇中给出了。本篇主要分析org.apache.avro.schema.java源码,以此深入了解schema。抽象类Schemaschema是abstract c原创 2015-09-03 21:53:56 · 2058 阅读 · 0 评论 -
【Hadoop】Avro源码分析(二):反序列化之Generic
文件读取类图继承DataFileStreamDataFileReaderHeader与Data Block读取初始化HeaderData Block读取本文着重研究avro反序列化的Generic方式,先从下面这段读取avro文件的代码开始讲起。File file = new File("e://twitter.avro");DatumReader dat原创 2015-10-10 22:17:25 · 3185 阅读 · 0 评论 -
Pig 实现关键词匹配
1. 问题描述收集日志avro数据中有两个Map字段appInstall、appUse分别表示已安装的app、正在使用的app,且key值为app的名称,value值为app使用信息。现在要得到一份匹配上购物类app支付宝|京东|淘宝|天猫的用户名单;MapReduce 解决办法如下:public static class M extends Mapper<String, Pair, ...原创 2016-01-14 10:46:00 · 88 阅读 · 0 评论 -
【Pig源码分析】谈谈Pig的数据模型
1. 数据模型SchemaPig Latin表达式操作的是relation,FILTER、FOREACH、GROUP、SPLIT等关系操作符所操作的relation就是bag,bag为tuple的集合,tuple为有序的field列表集合,而field表示数据块(A field is a piece of data),可理解为数据字段。Schema为数据所遵从的类型格式,包括:field的...原创 2016-01-20 14:20:00 · 159 阅读 · 0 评论 -
Apache Kylin 部署之不完全指南
1. 引言Apache Kylin(麒麟)是由eBay开源的分布式分析引擎,提供Hadoop之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据。底层存储用的是HBase,数据输入与cube building用的是Hive,中间数据存储用的是HDFS。搭建环境:Kylin version = 1.2Hive version = 0.13.1-cdh5.3.2HBase ver...原创 2016-01-30 13:01:00 · 314 阅读 · 0 评论 -
Kylin的cube模型
1. 数据仓库的相关概念OLAP大部分数据库系统的主要任务是执行联机事务处理和查询处理,这种处理被称为OLTP(Online Transaction Processing, OLTP),面向的是顾客,诸如:办事员、DBA等。而数据仓库主要面向知识工人(如经理、主管等)提供数据分析处理,这种处理被称为OLAP(Online Analysis Processing)。OLTP管理的是当前数据,比...原创 2016-03-03 17:05:00 · 130 阅读 · 0 评论 -
【Python】网络爬虫(一):pyquery一瞥
1.pyquery简介python中的pyquery模块语法与jquery相近,可用来解析HTML文件。官方文档地址:https://pythonhosted.org/pyquery/ 。通过HTML中的标签、id、给定的索引等来获取元素,使得解析HTML文件极为方便。2.实例2.1 爬取豆瓣电影页面中主演右键chrome中的审查元素,观察到主演的标原创 2014-04-29 20:49:51 · 4756 阅读 · 0 评论 -
【Python实战】Pandas:让你像写SQL一样做数据分析(一)
1. 引言Pandas是一个开源的Python数据分析库。Pandas把结构化数据分为了三类:Series,1维序列,可视作为没有column名的、只有一个column的DataFrame;DataFrame,同Spark SQL中的DataFrame一样,其概念来自于R语言,为多column并schema化的2维结构化数据,可视作为Series的容器(container);Panel...原创 2016-06-30 18:08:00 · 250 阅读 · 0 评论 -
【Python实战】Pandas:让你像写SQL一样做数据分析(二)
1. 引言前一篇介绍了Pandas实现简单的SQL操作,本篇中将主要介绍一些相对复杂一点的操作。为了方便后面实操,先给出一份简化版的设备统计数据:0 android NLL 387546520 20994579110 ios NLL 52877990 9164217551 android 魅族 8995958 1203695971 android 酷派 9915906 20081817...原创 2016-07-19 20:10:00 · 138 阅读 · 0 评论 -
MySQL常用SQL总结
1. 常见命令连接本地数据库与远程数据库(172.16.xx.xx:3306):mysql -h localhost -u root -p123 mysql -h 172.16.xx.xx -P 3306 -u root -p2. DDL数据定义语言(Data Definition Lanuage, DDL)定义了数据库模式,包括CREATE、ALTER、DROP、TRUNCATE、C...原创 2016-07-26 09:44:00 · 84 阅读 · 0 评论 -
大数据下的Distinct Count(一):序
在数据库中,常常会有Distinct Count的操作,比如,查看每一选修课程的人数:select course, count(distinct sid)from stu_tablegroup by course;Hive在大数据场景下,报表很重要一项是UV(Unique Visitor)统计,即某时间段内用户人数。例如,查看一周内app的用户分布情况,Hive中写HiveQL实现:...原创 2016-03-29 13:51:00 · 175 阅读 · 0 评论 -
大数据下的Distinct Count(二):Bitmap篇
在前一篇中介绍了使用API做Distinct Count,但是精确计算的API都较慢,那有没有能更快的优化解决方案呢?1. Bitmap介绍《编程珠玑》上是这样介绍bitmap的:Bitmap是一个十分有用的数据结构。所谓的Bitmap就是用一个bit位来标记某个元素对应的Value,而Key即是该元素。由于采用了Bit为单位来存储数据,因此在内存占用方面,可以大大节省。简而言之——...原创 2016-04-06 15:06:00 · 174 阅读 · 0 评论 -
轻量级OLAP(一):Cube计算
有一个数据多维分析的任务:日志的周UV;APP的收集量及标注量,TOP 20 APP(周UV),TOP 20 APP标注分类(周UV);手机机型的收集量及标注量,TOP 20 机型(周UV),TOP 20 手机厂商(周UV);初始的解决方案:Spark读取数据日志,然后根据分析需求逐一进行map、distinct、reduceByKey得到分析结果。但是,这种方案存在着非常大的缺点—...原创 2016-04-12 12:57:00 · 239 阅读 · 0 评论 -
轻量级OLAP(二):Hive + Elasticsearch
1. 引言在做OLAP数据分析时,常常会遇到过滤分析需求,比如:除去只有性别、常驻地标签的用户,计算广告媒体上的覆盖UV。OLAP解决方案Kylin不支持复杂数据类型(array、struct、map),要求数据输入Schema必须是平铺的,但是平铺后丢失了用户的聚合标签信息,而没有办法判断某一个用户是否只有性别、常驻地标签。显然,我们需要一种支持复杂数据类型的OLAP数据库;底层为Lucen...原创 2016-10-09 20:40:00 · 179 阅读 · 0 评论 -
【Python实战】Django建站笔记
前一段时间,用Django搭建一个报表分析的网站;借此正好整理一下笔记。1. 安装python有包管理工具pip,直接cd Python27/Scripts,输入pip install django# install by versionpip install --upgrade Django==<version>安装完成后,python -c "import djan...原创 2016-04-20 19:32:00 · 88 阅读 · 0 评论 -
【Kylin实战】邮件报表生成
在cube build完成后,我的工作是写sql生成数据分析邮件报表。但是,问题是这种重复劳动效率低、易出错、浪费时间。还好Kylin提供RESTful API,可以将这种数据分析需求转换成HTTP请求。1. RESTful APIKylin的认证是basic authentication,加密算法是Base64,加密的明文为username:password;在POST的header进行用...原创 2016-04-22 10:29:00 · 135 阅读 · 0 评论 -
【Kylin实战】Hive复杂数据类型与视图
1. 引言在分析广告日志时,会有这样的多维分析需求:曝光、点击用户分别有多少?标签能覆盖多少广告用户?各个标签(标注)类别能覆盖的曝光、点击在各个DSP上所覆盖的用户数……广告数据与标签数据join之后,存储orc file的schema如下:create external table default.ad_tag(uid string,dsp string,view ...原创 2016-04-28 17:26:00 · 179 阅读 · 0 评论 -
Hive UDF初探
1. 引言在前一篇中,解决了Hive表中复杂数据结构平铺化以导入Kylin的问题,但是平铺之后计算广告日志的曝光PV是翻倍的,因为一个用户对应于多个标签。所以,为了计算曝光PV,我们得另外创建视图。分析需求:每个DSP上的曝光PV,标签覆盖的曝光PV;累计曝光PV,累计标签覆盖曝光PV相当于cube(dsp, tag) + measure(pv),HiveQL如下:select ...原创 2016-05-05 18:03:00 · 100 阅读 · 0 评论 -
常用HiveQL总结
最近在用Hive做多维数据分析,总结一些常用HiveQL命令。1. 建表以纯文本数据建表:create table `dmp.dim_con_adx_id_name` ( `adx_id` string comment 'ADX ID' , `adx_name` string comment 'ADX名称' , `update_dt` string comment '更新时间(天粒度...原创 2016-05-20 18:43:00 · 174 阅读 · 0 评论 -
工作流引擎Oozie(一):workflow
1. Oozie简介Yahoo开发工作流引擎Oozie(驭象者),用于管理Hadoop任务(支持MapReduce、Spark、Pig、Hive),把这些任务以DAG(有向无环图)方式串接起来。Oozie任务流包括:coordinator、workflow;workflow描述任务执行顺序的DAG,而coordinator则用于定时任务触发,相当于workflow的定时管理器,其触发条件包括两...原创 2016-05-26 16:20:00 · 220 阅读 · 0 评论 -
工作流引擎Oozie(二):coordinator
1. 简介coordinator是workflow的定时提交器,基于时间条件与数据生成触发(based on time and data triggers)。简单点说,coordinator按所定义的时间周期进行轮询,若数据生成条件满足,则触发workflow任务;否则,则等待数据生成或跳过(调度策略由设置的超时时间决定)。2. 详解coordinator-app<coordina...原创 2016-06-13 17:23:00 · 112 阅读 · 0 评论 -
灵活可扩展的工作流管理平台Airflow
1. 引言Airflow是Airbnb开源的一个用Python写就的工作流管理平台(workflow management platform)。在前一篇文章中,介绍了如何用Crontab管理数据流,但是缺点也是显而易见。针对于Crontab的缺点,灵活可扩展的Airflow具有以下特点:工作流依赖关系的可视化;日志追踪;(Python脚本)易于扩展对比Java系的Oozie,Air...原创 2016-11-30 19:16:00 · 130 阅读 · 0 评论 -
Bloom Filter:海量数据的HashSet
Bloom Filter一般用于数据的去重计算,近似于HashSet的功能;但是不同于Bitmap(用于精确计算),其为一种估算的数据结构,存在误判(false positive)的情况。1. 基本原理Bloom Filter能高效地表征数据集合\(S = \lbrace x_1 ,x_2 ,...,x_n \rbrace\),判断某个数据是否属于这个集合。其基本思想如下:用长度为\(m\)...原创 2016-09-18 16:13:00 · 92 阅读 · 0 评论 -
用MongoDB分析合肥餐饮业
看了《从数据角度解析福州美食》后难免心痒,动了要分析合肥餐饮业的念头,因此特地写了Node.js爬虫爬取了合肥的大众点评数据。分析数据库我并没有采用MySQL而是用的MongoDB,是因为爬取的数据存在字段缺失的情况(schema不一致)。1. 数据准备MongoDB简介不同于MySQL,MongoDB是一种Schema-less的NoSQL数据库;与ElasticSearch类似,最小存...原创 2016-09-23 19:09:00 · 85 阅读 · 0 评论 -
一点做用户画像的人生经验:ID强打通
1. 背景在构建精准用户画像时,面临着这样一个问题:日志采集不能成功地收集用户的所有ID,且每条业务线有各自定义的UID用来标识用户,从而造成了用户ID的零碎化。因此,为了做用户标签的整合,用户ID之间的强打通(亦称为ID-Mapping)成了迫切的需求。大概三年前,在知乎上有这样一个与之相类似的问题:如何用MR实现并查集以对海量数据pair做聚合;目前为止还无人解答。本文将提供一个可能的基于...原创 2016-11-13 10:24:00 · 161 阅读 · 0 评论 -
MySQL的数据模型
MySQL的数据类型主要分为三大类:数值型(Numeric Type)日期与时间型(Date and Time Type)字符串类型(String Type)1. 数值MySQL的数值类型按照精确程度,大致可以分为两类:精确数值(Exact Value),包括INTEGER、DECIMAL、NUMERIC等;近似数值(Approximate Value),包括FLOAT、RE...原创 2016-11-16 17:16:00 · 195 阅读 · 0 评论 -
用Crontab打造简易工作流引擎
1. 引言众所周知,Oozie(1, 2)是基于时间条件与数据生成来做工作流调度的,但是Oozie的数据触发条件只支持HDFS路径,故而面临着这样的问题:无法判断Hive partition是否已存在;无法判断Elasticsearch index是否已写入完成;...因此,灵活可扩展的工作流引擎才是正确姿势!下面,我将介绍如何用Crontab来打造一个类似于Oozie的简易工作流...原创 2016-11-24 09:21:00 · 80 阅读 · 0 评论 -
Scala化规则引擎
1. 引言什么是规则引擎一个业务规则包含一组条件和在此条件下执行的操作,它们表示业务规则应用程序的一段业务逻辑。业务规则通常应该由业务分析人员和策略管理者开发和修改,但有些复杂的业务规则也可以由技术人员使用面向对象的技术语言或脚本来定制。业务规则的理论基础是:设置一个或多个条件,当满足这些条件时会触发一个或多个操作。规则引擎(rule engine)是指将复杂的业务逻辑抽象成规则,然后...原创 2016-11-21 17:55:00 · 134 阅读 · 0 评论 -
Elasticsearch的CRUD:REST与Java API
CRUD(Create, Retrieve, Update, Delete)是数据库系统的四种基本操作,分别表示创建、查询、更改、删除,俗称“增删改查”。Elasticsearch作为NoSQL数据库(虽然ES是为搜索引擎而生的,但我更愿意将其看作带有强大文本搜索功能的NoSQL)。以下示例基于Elasticsearch 2.4版本。Create在默认情况下,ES的REST接口的端口号为9...原创 2016-12-08 09:02:00 · 153 阅读 · 0 评论 -
Trie树的应用:查询IP地址的ISP
1. 问题描述给定一个IP地址,如何查询其所属的ISP,如:中国移动(ChinaMobile),中国电信(ChinaTelecom),中国铁通(ChinaTietong)?现有ISP的IP地址区段可供下载,比如中国移动的IP地址段103.20.112.0/22103.21.176.0/22111.0.0.0/20112.0.0.0/10117.128.0.0/10120.192....原创 2014-08-13 12:11:00 · 284 阅读 · 0 评论 -
Java实现过滤中文乱码
最近在日志数据清洗时遇到中文乱码,如果只要有非中文字符就将该字符串过滤掉,这种方法虽简单但并不可取,因为比如像Xperia™主題、天天四川麻将Ⅱ这样的字符串也会被过滤掉。1. Unicode编码Unicode编码是一种涵盖了世界上所有语言、标点等字符的编码方式,简单一点说,就是一种通用的世界码;其编码范围:U+0000 .. U+10FFFF。按Unicode硬编码的区间进行划分,Unico...原创 2016-03-25 16:35:00 · 453 阅读 · 0 评论 -
Java实时读取日志文件
古怪的需求#在实习的公司碰到一个古怪的需求:在一台服务器上写日志文件,每当日志文件写到一定大小时,比如是1G,会将这个日志文件改名成另一个名字,并新建一个与原文件名相同的日志文件,再往这个新建的日志文件里写数据;要求写一个程序能实时地读取日志文件中的内容,并且不能影响写操作与重命名操作。RandomAccessFile类中seek方法可以从指定位置读取文件,可以用来实现文件实时读取。JDK文...原创 2014-08-21 11:10:00 · 550 阅读 · 0 评论 -
【计算机图形学】六、Mandelbrot集
1. 算法2. 源代码#include "stdafx.h"#include "GL/glut.h"#include "stdlib.h"#include "math.h"float xmin=-2.00,xmax=0.50;float ymin=-1.25,ymax=1.25;void init(){ glClearColor(1.0,1.0,原创 2013-01-19 15:04:46 · 1814 阅读 · 0 评论 -
【计算机图形学】三、bezier曲线的生成
1. 算法2. 源代码#include "stdafx.h"#include "GL/glut.h"#include "stdlib.h"#include "math.h"void init(){ glClearColor(1.0,1.0,1.0,0.0); glMatrixMode(GL_PROJECTION); gluOrtho2D(0.0原创 2013-01-18 15:38:03 · 4202 阅读 · 0 评论 -
【计算机图形学】四、B样条曲线的生成
1.算法2. 源代码#include "stdafx.h"#include "GL/glut.h"#include "stdlib.h"void init(){ glClearColor(1.0,1.0,1.0,0.0); glMatrixMode(GL_PROJECTION); gluOrtho2D(0.0,600.0,0.0,400.原创 2013-01-18 15:42:18 · 6112 阅读 · 1 评论 -
【计算机图形学】五、Julia集
1. 算法2. 源代码#include "stdafx.h"#include "GL/glut.h"#include "stdlib.h"#include "math.h"void init(){ glClearColor(1.0,1.0,1.0,0.0); glMatrixMode(GL_PROJECTION); gluOrtho2D(-0.原创 2013-01-19 15:00:16 · 1693 阅读 · 0 评论 -
【计算机图形学】二、椭圆的生成
1. 算法2. 源代码#include "stdafx.h"#include "GL/glut.h"#include "stdlib.h"void init(){ glClearColor(1.0,1.0,1.0,0.0); glMatrixMode(GL_PROJECTION); gluOrtho2D(0.0,600.0,0.0,400原创 2013-01-18 15:32:55 · 2212 阅读 · 1 评论 -
【计算机图形学】一、直线的生成
1. 算法:2. 源代码:#include "stdafx.h"#include "GL/glut.h"#include "stdlib.h"#include "math.h"void init(){ glClearColor(1.0,1.0,1.0,0.0); glMatrixMode(GL_PROJECTION); gluOrtho2D(0.0,20原创 2013-01-18 15:21:51 · 1420 阅读 · 0 评论