Talk is Cheap的博客专栏

机器学习、NLP、【数据结构与算法】、大数据、编程语言知识分享

1
推荐
2116
阅读

【Kylin实战】邮件报表生成

在cube build完成后,我的工作是写sql生成数据分析邮件报表。但是,问题是这种重复劳动效率低、易出错、浪费时间。还好Kylin提供RESTful API,可以将这种数据分析需求转换成HTTP请求。1. RESTful APIKylin的认证是basic authentication,加密算法是Base64,加密的明文为username:password;在POST的header进行用户认证:...

发表了文章 • 2017-04-24 14:32 • 0 条评论

0
推荐
2280
阅读

【Kylin实战】Hive复杂数据类型与视图

1. 引言在分析广告日志时,会有这样的多维分析需求:曝光、点击用户分别有多少?标签能覆盖多少广告用户?各个标签(标注)类别能覆盖的曝光、点击在各个DSP上所覆盖的用户数……广告数据与标签数据join之后,存储orc file的schema如下:create external table default.ad_tag ( uid string ,dsp string ,view string ,cli...

发表了文章 • 2017-04-24 14:31 • 0 条评论

0
推荐
2963
阅读

Apache Kylin 部署之不完全指南

1. 引言Apache Kylin(麒麟)是由eBay开源的分布式分析引擎,提供Hadoop之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据。底层存储用的是HBase,数据输入与cube building用的是Hive,中间数据存储用的是HDFS。搭建环境:Kylin version = 1.2 Hive version = 0.13.1-cdh5.3.2 HBase version = 0.98.6+cdh5.3....

发表了文章 • 2017-04-20 14:38 • 0 条评论

3
推荐
3112
阅读

Kylin的cube模型

1. 数据仓库的相关概念OLAP大部分数据库系统的主要任务是执行联机事务处理和查询处理,这种处理被称为OLTP(Online Transaction Processing, OLTP),面向的是顾客,诸如:办事员、DBA等。而数据仓库主要面向知识工人(如经理、主管等)提供数据分析处理,这种处理被称为OLAP(Online Analysis Processing)。OLTP管理的...

发表了文章 • 2017-04-20 14:36 • 0 条评论

0
推荐
1329
阅读

Pig + Ansj 统计中文文本词频

最近特别喜欢用Pig,拥有能满足大部分需求的内置函数(built-in functions),支持自定义函数(user defined functions, UDF),能load 纯文本、avro等格式数据;illustrate看pig执行步骤的结果,describe看alias的schema;以轻量级脚本形式跑MapReduce任务,各种爽爆。1. Word Count较于中文,英文比较工整,可以...

发表了文章 • 2017-04-20 14:29 • 0 条评论

0
推荐
1170
阅读

Pig 实现关键词匹配

1. 问题描述收集日志avro数据中有两个Map字段appInstall、appUse分别表示已安装的app、正在使用的app,且key值为app的名称,value值为app使用信息。现在要得到一份匹配上购物类app支付宝|京东|淘宝|天猫的用户名单;MapReduce 解决办法如下:public static class M extends Mapper<String, Pair, String, Text> { ...

发表了文章 • 2017-04-20 14:27 • 0 条评论

2
推荐
1996
阅读

【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的名称及类型(names and typ...

发表了文章 • 2017-04-19 09:41 • 0 条评论

0
推荐
1787
阅读

Hive UDF初探

1. 引言在前一篇中,解决了Hive表中复杂数据结构平铺化以导入Kylin的问题,但是平铺之后计算广告日志的曝光PV是翻倍的,因为一个用户对应于多个标签。所以,为了计算曝光PV,我们得另外创建视图。分析需求:每个DSP上的曝光PV,标签覆盖的曝光PV;累计曝光PV,累计标签覆盖曝光PV相当于cube(dsp, tag) + measure(pv),Hi...

发表了文章 • 2017-04-19 09:33 • 0 条评论

0
推荐
1871
阅读

常用HiveQL总结

最近在用Hive做多维数据分析,总结一些常用HiveQL命令。1. 建表以纯文本数据建表:create table default.calendar_table ( day_cal date ,week_cal string ,montn_cal string ,year_cal string ) row format delimited fields terminated by ',' stored as textfile;若未指定为外部表(external table),则默认为托管...

发表了文章 • 2017-04-19 09:32 • 0 条评论

3
推荐
1456
阅读

【LeetCode题解】排序

1. 排序排序(sort)是一种常见的算法,把数据根据特定的顺序进行排列。经典的排序算法如下:冒泡排序(bubble sort)插入排序(insertion sort)选择排序(selection sort)快速排序(quick sort)堆排序(heap sort)归并排序(merge sort)冒泡排序依次比较相邻的两个元素,若逆序则交换;如此走访数列重复n次,即不...

发表了文章 • 2017-04-18 16:51 • 0 条评论

0
推荐
1327
阅读

【LeetCode题解】链表Linked List

1. 链表数组是一种顺序表,index与value之间是一种顺序映射,以O(1)的复杂度访问数据元素。但是,若要在表的中间部分插入(或删除)某一个元素时,需要将后续的数据元素进行移动,复杂度大概为O(n)。链表(Linked List)是一种链式表,克服了上述的缺点,插入和删除操作均不会引起元素的移动;数据结构定义如下:public ...

发表了文章 • 2017-04-18 16:44 • 0 条评论

0
推荐
1308
阅读

【LeetCode题解】数组Array

1. 数组直观地看,数组(Array)为一个二元组<index, value>的集合——对于每一个index,都有一个value与之对应。C语言中,以“连续的存储单元”实现数组:int arr[5], *p_arr[5];数组提供以O(1)O(1)的复杂度访问元素,下标从0开始。但是,数组的插入、删除操作却非常耗时,因为这涉及到了元素间的移动。常见的矩阵,...

发表了文章 • 2017-04-17 16:52 • 0 条评论

0
推荐
1468
阅读

【LeetCode题解】二叉树的遍历

我准备开始一个新系列【LeetCode题解】,用来记录刷题,顺便复习一下数据结构与算法。1. 二叉树二叉树(binary tree)是一种极为普遍的数据结构,树的每一个节点最多只有两个节点——左孩子结点与右孩子结点。C实现的二叉树:struct TreeNode { int val; struct TreeNode *left; // left child struct TreeNod...

发表了文章 • 2017-04-17 16:30 • 0 条评论

1
推荐
1580
阅读

整数压缩编码 ZigZag

在分析Avro源码时,发现Avro为了对int、long类型数据压缩,采用Protocol Buffers的ZigZag编码(Thrift也采用了ZigZag来压缩整数)。1. 补码编码为了便于后面的分析,我们先回顾下几个概念:原码:最高位为符号位,剩余位表示绝对值;反码:除符号位外,对原码剩余位依次取反;补码:对于正数,补码为其自身;对于负数,...

发表了文章 • 2017-04-13 10:57 • 0 条评论

0
推荐
1763
阅读

【数据压缩】LZ78算法原理及实现

在提出基于滑动窗口的LZ77算法后,两位大神Jacob Ziv与Abraham Lempel于1978年在发表的论文 [1]中提出了LZ78算法;与LZ77算法不同的是LZ78算法使用动态树状词典维护历史字符串。【数据压缩】LZ77算法原理及实现【数据压缩】LZ78算法原理及实现1. 原理压缩LZ78算法的压缩过程非常简单。在压缩时维护一个动态词典Dictionar...

发表了文章 • 2017-04-13 10:53 • 0 条评论